mülkiyet formülü: Aşağıdaki haritalama ileNHibernate Ben şu sınıf var filtre
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>
Birlikte bahar yoluyla varlık yüklemeye çalışıyorum:
Session.EnableFilter("TranslationFilter").SetParameter("LanguageId", 1);
return Session.Get<MyClass>(1);
ama ben adoexception alıyorum. Ben (bir profiler) o değişkeni görüyorum: TranslationFilter.LanguageId ile değiştirilmez? ve bu parametre değeri sunucuya gönderilmiyor mu?
Bu mümkün mü (formülde filtreler var) ve nasıl?
Çok teşekkürler!
Bu mümkün olmalıdır, Oren kendi blogunda bir örnek verir: http: // ayende. com/Blog/archive/2006/12/26/LocalizingNHibernateContextualParameters.aspx –
:) Bu blog yazısını (burada göndermeden önce) birkaç kez okudum, yanlış olduğumu görmek için, ancak farkı göremedim. Ancak nhforge'deki birisinin formüllerdeki parametrelerin desteklenmediğini söylemesi ilginç ... – rrejc