向数据库添加实体时出错

本文关键字:出错 实体 添加 数据库 | 更新日期: 2023-09-27 18:04:41

我得到以下异常消息:

保存未公开外键的实体时发生错误属性表示它们之间的关系。EntityEntries属性将会返回null,因为不能将单个实体标识为源属于例外。可以在保存时处理异常通过在实体类型中公开外键属性更容易。看到

我的内部异常与我改变表上的列名有关,因为它们以前没有意义(它们被赋予名称Customer_Customer_ID),并重命名我的Sku和我的Customer对象,它们组成在我的购物车中,使用以下数据注释

  [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'无效列名"Sku_SKU_ID"。"

命名这些组合对象的正确方法是什么,我是否需要修改我的OnModelCreating以反映这些变化到实体框架?

向数据库添加实体时出错

添加一个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将使用SkuCustomer表的外键创建Cart表,因为当前的结构遵循约定。

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