0

Я получаю следующее сообщение об исключении:Ошибка при добавлении объектов в базу данных

при сохранении объектов, которые не выставляют внешний ключ свойства их отношения произошла ошибка. Свойству 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'. \ г \ nInvalid имя столбца 'Sku_SKU_ID' «.

Каков правильный способ назвать эти скомпонованные объекты и мне нужно изменить мое OnModelCreating, чтобы отразить эти изменения в структуре сущности?

ответ

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; } 
} 

Предположим, что ваш идентификатор и класс Customer имеет свойство идентификатора типа int и является первичным ключом. EF создаст таблицу корзин с внешними ключами для Sku и Customer таблицы (-ов) должным образом, потому что текущая структура соответствует соглашению.

Теперь ваш класс сущностей имеет как целое Id (CustomerID) и свойство навигации (Customer)

+1

Спасибо! Я не понимал, что это имело значение. Нужно ли добавлять аннотации данных, что они являются внешними ключами? – ddeamaral

+1

Не нужно добавлять аннотацию данных, поскольку вы следуете за соглашением (ваше имя столбца - это имя таблицы + «ID» (например: CustomerId) – Shyju

+0

Когда я пытаюсь выполнить миграцию, он по-прежнему выводит Customer_CustomerID и мой обычный идентификатор клиента. client_CustomerID. Я скопировал именно то, что у вас есть. – ddeamaral