Скажем, у меня есть таблица в базе данных с именем TestDB с таблицей с именем Table1, которая содержит два столбца
ID
Name
В этой таблице есть две строки:
ID 1 and Name 'Row1'
ID 2 and Name 'Row2'
Еслиэто мой код
var currObj = Table1.Where(o => o.Name.Contains("Row1")).FirstOrDefault();
currObj.Name = "Row1a";
var a = Table1.Where(o => o.Name.Contains("Row1a")).FirstOrDefault();
var b = Table1.Local.Where(o => o.Name.Contains("Row1a")).FirstOrDefault();
a вернет ноль, а b вернет значение.
если я сделаю это, хотя
var c = Table1.Where(o => o.Name.Contains("Row2")).FirstOrDefault();
var d = Table1.Local.Where(o => o.Name.Contains("Row2")).FirstOrDefault();
затемc вернет что-то, но d не вернет.
Для меня это кажется не интуитивным, поскольку данные могут быть в двух разных местах.Для каждого запроса, который я делаю, я должен искать в базе данных и объекте Local и объединять их вместе.Например, если это изменилось в локальном объекте, я должен принять это во внимание.Есть ли в Entity Framework какой-либо механизм для этого, который бы рассматривал ОБА данные в базе данных И локальные одновременно?
Так что, если бы я пошел
var e = Table1.AMagicSolution.Where(o => o.Name.Contains("Row1a")).FirstOrDefault();
var f = Table1.AMagicSolution.Where(o => o.Name.Contains("Row2")).FirstOrDefault();
, тогда e и fоба возвращают что-то (f из базы данных и e из объекта Local)