При связывании объектов в отношениях «один ко многим» в EF только связывание через коллекцию работает должным образом - PullRequest
0 голосов
/ 04 июня 2019

У меня есть класс:

  public class Client
    {
        public Guid Id {get; set;}
        public virtual List<Receipt> Receipts { get; set; }
        public virtual List<Invoice> Invoices { get; set; }
    }

затем квитанция:

   public class Receipt
    {
        public Guid Id { get; set; }
        public string ServiceName {get; set;}
        public decimal Total { get; set; }
        public virtual Client Client { get; set; }
    }

и счет-фактура:

[Table("Invoices")]
public class Invoice:Receipt
{
    public double TaxNumber { get; set; }
}

когда у меня есть объекты этих классов, и я пытаюсь связать их следующим образом:

client = context.Clients.Find(guid1);
receipt1 = context.Receipts.Find(guid2);
receipt2 = context.Receipts.Find(guid3);
invoice1 = context.Invoices.Find(guid4);
//--------------linking
invoice1.Client = client;
receipt1.Client = client;
receipt2.Client = client;
context.SaveChanges();

затем Client_Id в таблицах Receipts и Invoices остается NULL. Однако, если я свяжу их так:

client.Invoices.Add(invoice1);
client.Receipts.Add(receipt1);
client.Receipts.Add(receipt2);
context.SaveChanges();

, тогда Client_Id в базе данных обновляется должным образом. Почему так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...