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所在目录执行以上命令才有效