Как проверить, действительно ли мой IQueryable будет компилироваться в SQL - PullRequest
0 голосов
/ 26 января 2019

У меня есть проект, работающий на EF (6.0) и пытающийся использовать OData, чтобы обеспечить простую функциональность табуляции.

Для этого у нас есть множество вертикальных срезов, которые обрабатывают IQueryable<T> прямо изDbContext до контроллера.Мы сопоставляем наши доменные модели с виртуальными машинами в этих срезах, что работает, потому что LinqToEntities безумно мощен, и преобразует эти операторы отображения объектов C # в SQL.Наш метод отображения принимает IQueryable<DomainModel>, вызывает .Select() и возвращает IQueryable<ViewModel>

Но некоторые из нашего кода отображения являются достаточно сложными, поэтому мы раздвигаем границы того, что может обрабатывать LinqToEntities, поэтому иногда мынаписать код, который компилируется, но во время выполнения LinqToEntities сообщает нам, что это слишком сложно и не поддерживается:

LINQ to Entities не распознает метод метода System.String ToString (System.String)и этот метод не может быть переведен в выражение хранилища.

Это нормально, и мы рады работать с этими ограничениями.Но я бы очень хотел провести быстрый юнит-тест, который предупредит меня о таких ошибках.

Как я могу UnitTest, совместим ли мой код сопоставления с LinqToEntities?


Я надеялся, что смогу просто запустить метод отображения в модульном тесте с заглушкой, лежащей в основе IQueryable, но это, похоже, не работает.

Прямой вопрос см. Здесьо , что ошибка: Ошибка при попытке проверить изолированный IQueryable

Но я не уверен, что это действительно сработает, даже если я смогу заставить код исполниться?

Как лучше всего достичь этой цели?

...