2011-10-15 41 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