我想在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; }
}
那么如何首先在代码中添加交集表? 感谢您的帮助
答案 0 :(得分:0)
您可以使用数据注释属性指定生成的表(和表名称)的列名。
您可能还希望使用key
属性明确指定主键列。
[Table("MyTable")]
pulic class MyClass
{
[Key]
[Column("MyIdColumn")]
public int Id { get; set; }
}
但我首先会尝试将交集表的主要属性(列)重命名为Product_UnitID
到Id
。这也可能解决问题。
自动主键检测
如果您没有明确指定主键(例如,使用key
属性或使用流畅的API),EF将查找名为Id
或TableNameId
的列,如下所述: Default id naming convention in Entity framework code first