#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, потому что это в модульном тестировании. На самом деле я не хочу добавлять его в базу данных.