linq для сущностей не распознает метод - PullRequest
0 голосов
/ 24 января 2011

У меня есть класс репозитория, у которого есть метод для возврата 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 Ответ

0 голосов
/ 24 января 2011

Не изобретайте 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();
       );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...