2011-10-15 40 views
0

我有一些像这样的代码:实体框架ToList()不工作

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被填充带发票。

问题是发票正在返回一个空列表。

难道有人请给我解释一下吗?

回答

1

如果我没有记错,调用ToList()使调用数据库,并返回结果集。由于您在调用ToList()之前尚未保存更改(添加发票),因此您添加的发票将不在结果集中。 DbSet上有一个Local属性,它返回您在内存中的Invoices集合。即使您没有SaveChanges(),该集合也会包含您添加的发票。

+0

谢谢,你知道这个属性叫什么吗? – AnonyMouse

+0

应该只能调用db.Set ()。本地 – mekansm

+0

太好了,谢谢! – AnonyMouse

0

请试试这个:

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>(); 
+0

谢谢,但我不想调用保存更改,因为这是在单元测试。我实际上并不想将其添加到数据库中。 – AnonyMouse