EFCore code first 总结

本文介绍了如何在ASP.NET Core项目中使用Entity Framework Core进行数据库迁移,包括定义模型、创建DbContext、配置数据库连接以及使用相关命令生成和应用迁移。详细步骤展示了如何设置SQL Server数据库并使用`dotnet ef`命令管理迁移。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;Password=gtdqADMIN@123");
            });
            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;Password=gtdqADMIN@123");
        }
    }

总之,必须定义模型,定义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所在目录执行以上命令才有效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值