EFCore code first 總結
阿新 • • 發佈:2021-01-12
技術標籤:netcore
add migrations
條件
- 定義模型
/// <summary>
/// 商品模型
/// </summary>
public class Product
{
[Key]
public int Id { set; get; }
/// <summary>
/// 商品編碼
/// </summary>
public string ProductCode { set; get; }
/// <summary>
/// 商品主圖
/// </summary>
public string ProductUrl { set; get; } // 商品主圖
/// <summary>
/// 商品標題
/// </summary>
public string ProductTitle { set; get; } //商品標題
/// <summary>
/// 圖文描述
/// </summary>
public string ProductDescription { set; get; } // 圖文描述
/// <summary>
/// 商品虛擬價格
/// </summary>
public decimal ProductVirtualprice { set; get; } //商品虛擬價格
/// <summary>
/// 價格
/// </summary>
public decimal ProductPrice { set; get; } //價格
/// <summary>
/// 商品序號
/// </summary>
public int ProductSort { set; get; } //商品序號
/// <summary>
/// 已售件數
/// </summary>
public int ProductSold { set; get; } //已售件數
/// <summary>
/// 商品庫存
/// </summary>
public int ProductStock { set; get; } //商品庫存
/// <summary>
/// 商品狀態
/// </summary>
public string ProductStatus { set; get; } // 商品狀態
}
- 定義DbContext
/// <summary>
/// 商品服務上下文
/// </summary>
public class ProductContext : DbContext
{
public ProductContext(DbContextOptions<ProductContext> options) : base(options)
{
//dotnet ef migrations add InitProductDb -c ProductContext -o migrations
}
/// <summary>
/// 商品集合
/// </summary>
public DbSet<Product> Products { get; set; }
/// <summary>
/// 商品圖片集合
/// </summary>
public DbSet<ProductImage> ProductImages { get; set; }
}
- 配置使用哪種型別資料庫
配置方法有兩種
在netcore ConfigureServices 裡面配置
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ProductContext>(optionsBuilder =>
{
optionsBuilder.UseSqlServer("Data Source=192.168.4.183,1433;Initial Catalog=Windy.Product;Persist Security Info=True;User ID=sa;[email protected]");
});
services.AddControllers();
}
或者在ProductContext,重寫OnConfiguring 配置
public class ProductContext : DbContext
{
public ProductContext(DbContextOptions<ProductContext> options) : base(options)
{
//dotnet ef migrations add InitProductDb -c ProductContext -o migrations
}
/// <summary>
/// 商品集合
/// </summary>
public DbSet<Product> Products { get; set; }
/// <summary>
/// 商品圖片集合
/// </summary>
public DbSet<ProductImage> ProductImages { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
optionsBuilder.UseSqlServer("Data Source=192.168.4.183,1433;Initial Catalog=Windy.Product;Persist Security Info=True;User ID=sa;[email protected]");
}
}
總之,必須定義模型,定義context,配置使用資料庫的型別和連線串,另外還需要新增對應資料庫型別的程式包,
Sqlserver如圖
相關命令如下:
生成migration
dotnet ef migrations add InitProductDb -c ProductContext -o migrations
生成或者更新資料庫 , 沒有migration也可以生成資料庫,
預設更新到最新的migration,
dotnet ef database update
從最新的migration刪除,執行一次刪除一個
dotnet ef migrations remove
列出所有的migration
dotnet ef migrations list
注意: 必須進入csproj所在目錄執行以上命令才有效