Указанный метод не поддерживается nhibernate 3 - PullRequest
3 голосов
/ 29 декабря 2010

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

 public JsonResult AllEducationDegree(string search)
    {
        var data = Repository<EducationDegree>
          .FindBySpecification(new EducationDegreeSpecification().Search(search))
          .Take(10)
          .Select(p => new NameValue(p.Title, (int)p.Id))
          .ToList();
         // .AsDropdown(" ");
        return Json(data, JsonRequestBehavior.AllowGet);
    }

public class EducationDegreeSpecification : FluentSpecification<EducationDegree>
{
    public EducationDegreeSpecification Search(string EducationDegreeSearch)
    {
        if (!String.IsNullOrEmpty(EducationDegreeSearch))
        {
            string[] searchs = EducationDegreeSearch.Split(' ');
            foreach (string search in searchs)
            {
                if (!String.IsNullOrEmpty(search))
                {
                    AddExpression(p => p.Title.Contains(search));
                }
            }
        }
        return this;
    }

}

Ответы [ 3 ]

3 голосов
/ 03 октября 2012

Вам нужно выбрать перед Take.Это должно работать.

   var data = Repository<EducationDegree>
      .FindBySpecification(new EducationDegreeSpecification().Search(search))
      .Select(p => new NameValue(p.Title, (int)p.Id))
      .Take(10)
      .ToList();
     // .AsDropdown(" ");
    return Json(data, JsonRequestBehavior.AllowGet);
0 голосов
/ 18 марта 2016

В последних нескольких строках ...

AddExpression(p => p.Title.Contains(search));

если p.Title имеет значение null, вы получите «определенный метод не поддерживается» Вы можете попробовать написать

AddExpression(p => p.Title != null && p.Title.Contains(search));

или используя C # 6

AddExpression(p => p.Title?.Contains(search));
0 голосов
/ 02 октября 2011

У меня просто похожая проблема, и это происходит потому, что свойство, которое было отображено как "многие-к-одному", имеет атрибут lazy = "no-proxy".Я удалил это, и это работает.Возможно, проблема в том, что это свойство использовалось в , где часть запроса.Например:

 EntityType aliasEntityType = null;
 PropertyType aliasPropertyType = null; 

 QueryOver.Of<EntityType>(() => aliasEntityType)
 .JoinAlias(() => aliasEntityType.Property, () => aliasPropertyType)
 .Where(() => aliasPropertyType.SomeValue == someValue)
 ....

Итак, свойство типа PropertyType не должно иметь lazy = "no-proxy".Я пытался неявным образом получить свойство, но оно не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...