2009-05-20 65 views
5

我有一個下面的類:NHibernate的屬性式濾波器

MyClass 
public virtual int Id { get; set; } 
public virtual int Code { get; set; } 
public virtual int Description { get; set; } 
public virtual int Name { get; set; } 

具有以下映射:

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="TestApplication" assembly="TestApplication"> 
    <class name="MyClass" table="MyTable"> 
    <id name="Id" column="id"> 
     <generator class="native"/> 
    </id> 

    <property name="Code" column="code"/> 
    <property name="Description" column="description"/> 
    <property name="Name" formula="(SELECT b.translation FROM translations b WHERE b.translation_id = translation_id AND b.language_id = :TranslationFilter.LanguageId)"/> 
    </class> 

    <filter-def name="TranslationFilter"> 
    <filter-param name="LanguageId" type="Int32"/> 
    </filter-def> 
</hibernate-mapping> 

我試圖通過彈簧與加載實體:

Session.EnableFilter("TranslationFilter").SetParameter("LanguageId", 1); 
return Session.Get<MyClass>(1); 

但我得到adoexception。我看到(在探查器中)該變量:TranslationFilter.LanguageId不被替換爲?並且該參數值不發送到服務器?

這是可能的(在公式中有過濾器)以及如何?

非常感謝!

+0

這應該是可能的,奧倫在他的博客舉例說明:http:// ayende。 com/Blog/archive/2006/12/26/LocalizingNHibernateContextualParameters.aspx – 2009-05-20 13:59:10

回答

1

此功能尚未正式支持。因爲這樣的oren的博客文章有關這種組合2種不同的功能(公式和過濾器)應該採取一粒鹽...