Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在代码优先实体框架中使用主键标识初始化DatabaseProduct?_C#_Entity Framework_Ef Code First_Linq To Entities_Code First - Fatal编程技术网

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);
更多