Я задал вопрос здесь об ошибке Linq, которая возникает в результате смешивания Linq-To-SQL с кодом С#. Короче говоря, компилятор запутался и не понимает, что вы намереваетесь вызывать локальную функцию в результирующем наборе после, который возвращается из базы данных.
Ответ, который я принял, состоял в том, чтобы использовать AsEnumerable()
в результирующем наборе, заставляя его возвращать все столбцы перед выполнением дальнейших вычислений.
Теперь моя проблема заключается в том, что очень похоже, я теперь пытаюсь вызвать метод объекта, связанный с моим набором результатов через внешний ключ, например:
var q =
from c in MyCities.AsEnumerable() // note the AsEnumerable, forcing the query to execute before accessing properties of c
let cy = c.County
select new { CityName = c.Name, CountyName = cy.Name, CountyFoo = cy.Foo() };
И угадайте, что - это снова исключает это исключение. Зачем? Очевидно, потому что нам нужно снова вернуться к базе данных, чтобы загрузить связанный County
из c
. Только на этот раз я не могу назвать AsEnumerable()
, потому что c
имеет только один округ, а не коллекцию!
Dwat, который был просто wabbit!
Как мне обойти этот?