У меня простой запрос Linq2Sql:
var result = from t in MyContext.MyItems
select new MyViewModelClass()
{
FirstProperty = t,
SecondProperty = new SomeLinq2SqlEntity()
}
Проблема в том, что кажется, что new SomeLinq2SqlEntity()
выполняется только один раз для последовательности, поэтому все экземпляры MyViewModelClass
в результате совместного использования запросассылка на один объект.
Обновление : вот как я это быстро проверил:
result[0].SecondProperty.MyField = 10;
Используя отладчик, я могу проверить, что MyField
было установлено на 10
во всех случаях.
Когда я заменяю запрос LINQ на foreach, он работает как положено:
var result = from t in MyContext.MyItems select t;
var list = new List<MyViewModelClass>();
foreach (var item in result)
{
list.add(new MyViewModelClass()
{
FirstProperty = item,
SecondProperty = new SomeLinq2SqlEntity()
});
}
Я не нашел корень проблемы, носообщение, помеченное как asnwer, обеспечивает хороший обходной путь.Проверьте этот ответ для подробного описания: «новый» внутри проекции типа бетона вызывается только один раз