实体框架代码优先:多对多自引用,命名约定

时间:2016-01-16 12:12:32

标签: c# .net entity-framework naming-conventions code-first

工作示例

class Product
{
   public int Id { get; set; }
   public string Name { get; set; }
}

class Color
{
   public int Id { get; set; }
   public string Name { get; set; }
}

class ProductColor
{
    public int Id { get; set; }

    [ForeignKey("ProductId")]
    public Product Product { get; set; }
    public int ProductId { get; set; }

    [ForeignKey("ColorId")]
    public Color Color { get; set; }
    public int ColorId { get; set; }
}

添加并应用迁移后,当我添加到ProductColors的产品列表时,不会更改实体上下文(无需添加和应用新迁移)

class Product
{
    ...
    public virtual ICollection<ProductColor> ProductColors { get; set; }
}

这没关系。

不工作示例

但是如果需要将产品引用到产品中,产品中的名单如何?例如

class ProductForm
{
    public int Id { get; set; }

    [ForeignKey("ProductId")]
    public Product Product { get; set; }
    public int ProductId { get; set; }

    [ForeignKey("FormId")]
    public Product Form { get; set; }
    public int FormId { get; set; }

    public ProductType ProductType { get; set; }
}

当我尝试添加列表

class Product 
{
    ...
    public virtual ICollection<ProductForm> ProductForms { get;set;}
}

这将改变实体上下文。这是错误的。

感谢。

0 个答案:

没有答案