我有一些这样的代码:
var db = new MYContext();
var invoice = new Invoice { InvoiceId = 7 };
db.Set<Invoice>().Add(invoice);
var invoiceFound = db.Set<Invoice>().Find(7);
var invoices = db.Set<Invoice>().ToList();
invoiceFound用发票填充。
问题是发票返回一个空列表。
有人能给我解释一下吗?如果我没记错的话,调用ToList()会调用数据库并返回结果集。由于在调用ToList()之前没有保存更改(添加发票),因此您添加的发票将不在结果集中。DbSet上有一个Local属性,它返回内存中的发票集合。这个集合将包含您添加的Invoice,即使您没有SaveChanges()。
请试试这个:
var db = new MYContext();
var invoice = new Invoice { ID = 7 };
db.AddToInvoice(invoice);
db.SaveChanges();
var qry = from item in db.Country select item;
IList<Invoice> list = qry.ToList<Invoice>();