2009-05-20 2 views
5

ho una classe seguente:NHibernate formula proprietà filtro

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

con il seguente mappatura:

<?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> 

Sto cercando di caricare un'entità attraverso la primavera con:

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

ma sto diventando adoeccitato. Vedo (in un profiler) la variabile: TranslationFilter.LanguageId non viene sostituita con? e quel valore del parametro non viene inviato al server?

E 'possibile (avere filtri in formula) e come?

Grazie mille!

+0

Questo dovrebbe essere possibile, Oren fornisce un esempio sul suo blog: http: // ayende. com/Blog/archive/2006/12/26/LocalizingNHibernateContestualParameters.aspx –

+0

:) Ho letto questo post del blog più volte (prima di postare qui), per vedere dove ho sbagliato, ma non ho potuto vedere la differenza. Ma è interessante che qualcuno su nhforge abbia detto che i parametri nelle formule non sono supportati ... – rrejc

risposta

1

Questa funzione non è supportata ufficialmente. Come post di questo oren's blog su questa combinazione di 2 diverse caratteristiche (formule e filtri) dovrebbe essere presa con un pizzico di sale ...