将实体添加到数据库时出错

时间:2016-08-30 00:30:07

标签: c# entity-framework asp.net-mvc-4 ef-code-first ef-fluent-api

我收到以下异常消息:

  

保存不公开外键的实体时发生错误   他们关系的属性。 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以将这些更改反映到实体框架?

1 个答案:

答案 0 :(得分:0)

SkuIDCustomerId属性添加到您的实体类。

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表到SkuCustomer表,因为当前结构遵循惯例。

现在你的实体类有整数Id(CustomerID)和导航属性(Customer