2017-10-26 5 views
3

は今、私はこれでFilterDefinitionを持っている:Filterdefinition(SQL:IN)

public class PurposeFilter:FilterDefinition 
{ 
    public PurposeFilter() 
     : base(NHibernateFilters.PurposeFilter, "PurposeId = :purposeId", 
     new Dictionary<string, IType> { { "purposeId", NHibernateUtil.Int64 } }, false) 
    {} 
} 

これは、生成されたSQLにWHERE PurposeId = <someId>を追加します。しかし、私は複数のIDのサポートを追加したいので、結果として得られるSQLはWHERE PurposeId IN (<someId>, <someOtherId>)になります。私は次のコードを持っています(それは動作しません) - これをサポートする方法に関する提案?

public class MultiPurposeFilter : FilterDefinition 
{ 
    public MultiPurposeFilter() 
     : base(NHibernateFilters.MultiPurposeFilter, "PurposeId IN (purposeIds)" 
      , new Dictionary<string, IType> { { "purposeIds", NHibernateUtil.Int64 } }, false) 
    { 

    } 
} 
+1

値を設定するために "PurposeId IN(:purposeIds)"および 'SetParameterList'メソッドを試しましたか? – Najera

+0

@Najera:それは簡単でした...それは動作します...ありがとう!あなたのコメントを回答に変換してください、私はそれを承認します;-) – Goblin

答えて

1

私はまだ試していないが、あなたは値を設定するPurposeId IN (:purposeIds)SetParameterList方法を使用することができます。

関連する問題