2010-12-29 61 views
3

最近、nhibernate 2から3に移行しました。問題は、ほとんどのクエリで、問題が発生する前です。 と私はこのエラーを参照してください指定されたメソッドはサポートされていません それらはすべて、Hibernate 2でうまくいきます。これらのクエリのいずれかが似ている。この指定されたメソッドはサポートされていません。nhibernate 3

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; 
    } 

} 
+1

を使用して試みることができますか? – Paco

+2

@Paco - それは質問です – JohannesH

+0

@Adrakadabra - 私は同じ問題があります。私はそれを "私の使用"に分離しましたが、代わりに何をすべきかわかりません。 – JohannesH

答えて

0

私は同様の問題を持っている、とのようにマッピングされたプロパティは、「多対一」怠惰属性きたので、それが起こる=「ノープロキシ」。私はそれを削除し、それは動作します。問題はおそらく、このプロパティがで使用されていて、クエリの一部がであるためです。 Like:

EntityType aliasEntityType = null; 
PropertyType aliasPropertyType = null; 

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

PropertyTypeタイプのプロパティは、lazy = "no-proxy"であってはなりません。暗黙的にPropertyを取得しようとしましたが、機能しません。

3

テイクの前に選択する必要があります。それは動作するはずです。最後の数行で

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

...

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)); 
関連する問題