2

nHibernate Criteria を使用してクエリを再作成する必要があります。このクエリには、かなり醜い where 句がありました。

((t.Disposition_CD)='ac' Or    
 (t.Disposition_CD)='cc' Or  
 (t.Disposition_CD)='Co' Or  
 (t.Disposition_CD)='SF' Or  
 (t.Disposition_CD)='SC' Or  
 (t.Disposition_CD)='OR' Or  
 (t.Disposition_CD)='SV' Or  
 (t.Disposition_CD)='RI' Or  
 (t.Disposition_CD)='WN' Or  
 (t.Disposition_CD)='NC' Or  
 (t.Disposition_CD)='DN' Or  
 (t.Disposition_CD)='WT' Or  
 (t.Disposition_CD)='MA' Or  
 (t.Disposition_CD)='TO' Or  
 (t.Disposition_CD)='OC'))

だから、私はここから始めました

IList leadList = 
     session.CreateCriteria(typeof(Lead)).Add(Expression.In("CallDisposition", 
     new string[] {"AC","CC" })).List();

リードのプロパティがCallDispositionオブジェクトであり、Unknown entity class: System.Stringこれを実行しようとするとエラーが発生する問題。の配列は、CallDisposition探しているものです。

基本的に、私が探しているのは、元のクエリのすべてまたは基準を満たすリードのリストです。どんな提案も役に立ちます。

4

2 に答える 2

2

エンティティのプロパティを知らなければ、コメントするのは難しいです。

CallDispositionプロパティがCallDispostionCodeプロパティを持つCallDispositionエンティティである場合は、次のようにすることができます。

IList leadList = session.CreateCriteria(typeof(Lead))
   .Add(Expression.In("CallDisposition.CallDispostionCode", 
                      new string[] {"AC","CC" })).List();

または、CallDispositionにIDがある場合は、2番目のソリューションを次のように変更できます。

DetachedCriteria criteria = DetachedCriteria.For<CallDisposition>()
    .Add(Expression.In("CallDispostionCode", new string[] { "AC", "CC" })
    .SetProjection(Projections.Property("CallDisposition.Id"));

IList leadList = session.CreateCriteria(typeof(EmcLead))
    .Add(Subqueries.PropertyIn("CallDisposition.Id", criteria)).List();

これは、副選択を使用してヒットしたデータベースは1つだけです。

于 2009-07-01T09:48:51.600 に答える
1

わかりました...私は望ましい結果を達成しましたが、私はそれについて別の方法で取り組みました。

最初に私はこれをしました

IList DispList = session.CreateCriteria(typeof(CallDisposition)).Add(Expression.In("CallDispostionCode", new string[] { "AC", "CC" })).List();

続いてこれ

IList leadList = session.CreateCriteria(typeof(EmcLead)).Add(Expression.In("CallDisposition", DispList)).List();

オブジェクトにを保存した場合CallDispositionCodeLeadリードに直接アクセスして、を取得できますCallDispositionCode。これは設計上の問題です。

誰か提案やコメントがあれば、聞いてみたいと思います。

于 2009-07-01T09:37:27.567 に答える