1. 程式人生 > 其它 >EFCore code first 總結

EFCore code first 總結

技術標籤: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所在目錄執行以上命令才有效