Entity framework ToList() не работает

#entity-framework #entity-framework-4

#entity-framework #entity-framework-4

Вопрос:

У меня есть такой код:

 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 есть локальное свойство, которое возвращает вашу коллекцию счетов-фактур в памяти. Эта коллекция будет содержать добавленную вами накладную, даже если вы не используете SaveChanges() .

Комментарии:

1. Спасибо, вы знаете, как называется свойство?

2. нужно просто иметь возможность вызывать db.Set<Invoice>().Local

Ответ №2:

Пожалуйста, попробуйте это:

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

Комментарии:

1. Спасибо, но я не хочу вызывать save changes, потому что это в модульном тестировании. На самом деле я не хочу добавлять его в базу данных.