LINQ2SQL переключиться на EF при чтении списка записей - PullRequest
0 голосов
/ 06 июля 2010

Я пытаюсь перейти с LINQ2SQL на EF ... Я получаю следующую ошибку с кодом, который изначально работал с LINQ2SQL и, кажется, компилируется правильно: </p> <blockquote> <p>Csla.DataPortalException: DataPortal.Fetch failed (LINQ to Entities does not recognize the method 'MyApp.Logic.UserInfo FetchUserInfo(MyApp.Data.User)' method, and this method cannot be translated into a store expression.)</p> <p>---> Csla.Reflection.CallMethodException: DataPortal_Fetch method call failed</p> <p>---> System.NotSupportedException: LINQ to Entities does not recognize the method 'MyApp.Logic.UserInfo FetchUserInfo(MyApp.Data.User)' method, and this method cannot be translat...

Этоcode:

var data = query.Select(row => UserInfo.FetchUserInfo(row));

this.AddRange(data);

Я пытаюсь прочитать список данных и загрузить объекты в мой класс.Я новичок в EF и просто думаю, что я что-то упускаю.

Любая помощь будет принята с благодарностью!

Для тех, кто заинтересован, решение было:

var data = query.AsEnumerable().Select(UserInfo.FetchUserInfo);

1 Ответ

2 голосов
/ 06 июля 2010

Насколько я вижу, проблема в том, что поставщик Linq to Entities ничего не знает о том, как перевести ваш пользовательский метод FetchUserInfo в ESQL.

Если UserInfo - это просто DTO, а UserInfo.FetchUserInfoявляется своего рода методом преобразования Entity в DTO, это поможет

var data = query.AsEnumerable().Select(row => UserInfo.FetchUserInfo(row));

.AsEnumerable(), вызовет материализацию результатов query в объекты памяти.

...