Вот один из способов сделать это:
using (var db = new Ctp5Context())
{
var inv = new Invoice()
{
InvoiceId = Guid.NewGuid()
};
var invLine = new InvoiceLine()
{
InvoiceLineId = Guid.NewGuid(),
Header = inv
};
db.InvoiceLines.Add(invLine);
db.SaveChanges();
}
Если вы предпочитаете добавить объект счета, то:
using (var db = new Ctp5Context())
{
var invLine = new InvoiceLine()
{
InvoiceLineId = Guid.NewGuid()
};
var inv = new Invoice()
{
InvoiceId = Guid.NewGuid(),
Lines = new List<InvoiceLine>() { invLine}
};
db.Invoices.Add(inv);
db.SaveChanges();
}
Несмотря на то, что все это работает, я рекомендую всегда инициализировать коллекцию свойства навигации в конструкторах классов, чтобы вам не приходилось делать это в клиентском коде каждый раз, а также не было возможности вызвать исключение NullReferenceException в время выполнения:
public class Invoice
{
public Invoice()
{
Lines = new List<InvoiceLine>();
}
public Guid InvoiceId { get; set; }
public virtual ICollection<InvoiceLine> Lines { get; set; }
}
...
using (var db = new Ctp5Context())
{
var invLine = new InvoiceLine()
{
InvoiceLineId = Guid.NewGuid()
};
var inv = new Invoice()
{
InvoiceId = Guid.NewGuid(),
};
inv.Lines.Add(invLine);
db.Invoices.Add(inv);
db.SaveChanges();
}