我收到以下异常消息:
保存不公开外键的实体时发生错误 他们关系的属性。 EntityEntries属性将 返回null,因为无法将单个实体标识为源 例外。可以在保存时处理异常 通过在实体类型中公开外键属性更容易。看到 InnerException以获取详细信息。
我的内部异常与我在我的桌子上更改列名称有关,因为它们之前没有意义(它们被命名为Customer_Customer_ID)并重命名了我的Sku和我在购物车中组成的客户对象,使用以下数据注释
[Table("Cart")]
public class Cart
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public Guid CartID { get; set; }
[Column("SkuID")]
public virtual Sku Sku { get; set; }
[Required]
public int Quantity { get; set; }
[Column("CustomerID")]
public virtual Customer Customer { get; set; }
public bool IsCheckedOut { get; set; }
}
这是异常消息的内部异常
"列名无效' Customer_Customer_ID'。\ r \ n无效的列名 ' Sku_SKU_ID'"
命名这些组合对象的正确方法是什么?我是否需要修改OnModelCreating以将这些更改反映到实体框架?
答案 0 :(得分:0)
将SkuID
和CustomerId
属性添加到您的实体类。
public class Cart
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public Guid CartID { get; set; }
public int SkuID { set;get;}
public virtual Sku Sku { get; set; }
[Required]
public int Quantity { get; set; }
public int CustomerID{ set;get;}
public virtual Customer Customer { get; set; }
public bool IsCheckedOut { get; set; }
}
假设您的Sku和Customer类具有类型为int
的ID属性,并且它是主键。 EF将正确创建带有外键的Cart表到Sku
和Customer
表,因为当前结构遵循惯例。
现在你的实体类有整数Id(CustomerID
)和导航属性(Customer
)