C# 如何在代码优先实体框架中使用主键标识初始化DatabaseProduct?
我正在使用实体框架,希望初始化我的数据库 我有三节课C# 如何在代码优先实体框架中使用主键标识初始化DatabaseProduct?,c#,entity-framework,ef-code-first,linq-to-entities,code-first,C#,Entity Framework,Ef Code First,Linq To Entities,Code First,我正在使用实体框架,希望初始化我的数据库 我有三节课 部门 类别 产品 我正在创建一个新类,用于为从类继承的数据库设定种子DropCreateDatabaseIfModelChanges。我不知道该在id列中做什么,因为它是标记为标识 我的课堂逻辑如下: public class Product { [ScaffoldColumn(false)] [Key()] [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- 部门
- 类别
- 产品
DropCreateDatabaseIfModelChanges
。我不知道该在id列中做什么,因为它是标记为标识
我的课堂逻辑如下:
public class Product
{
[ScaffoldColumn(false)]
[Key()]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ProductID { get; set; }
[Required,StringLength(100),Display(Name="Name")]
public string ProductName { get; set; }
public int? CategoryID { get; set; }
public virtual Categories Category { get; set; }
}
public class Categories
{
[ScaffoldColumn(false)]
public int CategoryID { get; set; }
[Required, StringLength(100), Display(Name = "Name")]
public string CategoryName { get; set; }
[Display(Name = "Product Description")]
public string Description { get; set; }
public virtual ICollection<Product> Products { get; set; }
public int? DepartmentID { get; set; }
public virtual Department Department { get; set; }
}
public class ProductDatabaseInitializer:DropCreateDatabaseIfModelChanges<EwayContext>
{
protected override void Seed(EwayContext context)
{
base.Seed(context);
}
private static List<Categories> Categories()
{
var categories= new List<Categories> {
new Category{DepartmentId = //?? in what way map the items
};
}
}
公共类产品
{
[脚手架立柱(假)]
[Key()]
[数据库生成(DatabaseGeneratedOption.Identity)]
public int ProductID{get;set;}
[必需,字符串长度(100),显示(Name=“Name”)]
公共字符串ProductName{get;set;}
公共int?CategoryID{get;set;}
公共虚拟类别类别{get;set;}
}
公共课类别
{
[脚手架立柱(假)]
public int CategoryID{get;set;}
[必需,字符串长度(100),显示(Name=“Name”)]
公共字符串CategoryName{get;set;}
[显示(名称=“产品说明”)]
公共字符串说明{get;set;}
公共虚拟ICollection产品{get;set;}
公共int?部门ID{get;set;}
公共虚拟部门部门{get;set;}
}
公共类ProductDatabaseInitializer:DropCreateDatabaseIfModelChanges
{
受保护的覆盖无效种子(上下文)
{
种子(上下文);
}
私有静态列表类别()
{
变量类别=新列表{
新类别{DepartmentId=//?以何种方式映射项目
};
}
}
您可以设置临时密钥,只要它们也是唯一的,临时密钥在保存前将用于建立关系,保存后将替换为标识密钥
var department = new Department{ DepartmentID = 567 };
context.Departments.Add(department);
var category = new Category { CategoryID = 1234, DepartmentID = 567 };
context.Categories.Add(category);
var product = new Product { ProductID = 222, CategoryID = 1234 };
context.Products.Add(product);
更多