linq для сущностей не распознает метод
У меня есть класс репозитория, который имеет метод для возврата ObjectSet
что-то вроде
public class Repository:ObjectContext
{
public IObjectSet<T> GetObjectSet()
{...}
}
Когда я использую это в запросе, я получаю ошибку linq to entity (не распознает метод...)
Мне нравится эта идея иметь общий репозиторий, который не обновляется каждый раз (с помощью шаблонов T4). Есть ли способ расширить поставщик запросов для распознавания моего метода? Но я хочу разрешить его на сервере (другими словами, участвовать в генерации запросов). Пример кода, который использует это:
static readonly Func<Repository,
string, AuthorizedUser> getInstitutionByAuthorizedUserName = CompiledQuery.Compile(
(ObjectContext ctx, string userName) =>
(from inst in ctx.GetObjectSet<Institution>()
join auths in ctx.GetObjectSet<AuthorizedUser>()
on inst.Key equals auths.Institution.Key
where auths.Name == userName
select inst.Key).SingleOrDefault();
1 ответ
Не изобретать CreateObjectSet
и сломать join
привычка:
static readonly Func<Repository,
string, AuthorizedUser> getInstitutionByAuthorizedUserName = CompiledQuery.Compile(
(ObjectContext ctx, string userName) =>
from inst in ctx.CreateObjectSet<Institution>()
from auths in inst.Authorizations
where auths.Name == userName
select inst.Key).SingleOrDefault();
);