Code First中的交叉表

时间:2016-04-11 20:45:27

标签: asp.net-mvc entity-framework

我想在EF Code First中添加交集表,并且我一直得到信息 - 每个表中的列名必须是唯一的。表'PRODUCTs'中的列名'Product_Unit_Product_UnitID'被多次指定。

这是代码:

public class PRODUCT
{
    public int ProductID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public decimal Price_Net { get; set; }
    public decimal Price_Gross { get; set; }
    public int Vat { get; set; }
    public decimal Price_Offer_Net { get; set; }
    public decimal Price_Offer_Gross { get; set; }
    public bool Is_Offer { get; set; }
    public bool Is_Lock { get; set; }
    public OFFER Offer { get; set; }
    public ICollection<PRICE_CUSTOMER> Price_Customer { get; set; }
    public int CategoryID { get; set; }
    public virtual CATEGORY Category { get; set; }
    public int BrandID { get; set; }
    public virtual BRAND Brand { get; set; }
    public int StockID { get; set; }
    public virtual STOCK Stock { get; set; }
    public ICollection<PRODUCT_UNIT> Product_Unit_L { get; set; }
    public int Product_UnitID { get; set; }
    public virtual PRODUCT_UNIT Product_Unit { get; set; }

}

和PRODUCT_UNIT

public class PRODUCT_UNIT
{
    public int Product_UnitID { get; set; }
    public decimal Converter { get; set; }
    public int Barcode { get; set; }
    public ICollection<PRODUCT> Product_L { get; set; }
    public int ProductID { get; set; }
    public virtual PRODUCT Product { get; set; }
    public int UnitID { get; set; }
    public virtual UNIT Unit { get; set; }

}

那么如何首先在代码中添加交集表? 感谢您的帮助

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用数据注释属性指定生成的表(和表名称)的列名。 您可能还希望使用key属性明确指定主键列。

[Table("MyTable")]
pulic class MyClass
{
  [Key]
  [Column("MyIdColumn")]
  public int Id { get; set; }
}

但我首先会尝试将交集表的主要属性(列)重命名为Product_UnitIDId。这也可能解决问题。


自动主键检测

如果您没有明确指定主键(例如,使用key属性或使用流畅的API),EF将查找名为IdTableNameId的列,如下所述: Default id naming convention in Entity framework code first