A wiki article on localization techniques with NHibernate:

http://nhforge.org/wikis/howtonh/localization-techniques.aspx

On Apr 26, 10:29 am, Shatl <[email protected]> wrote:
> Hi,
> I'm adding Multilanguage support to my application.
> User should see localized data based on language selected in UI.
>
> I'm trying to implement this as one-to-one mapping with filter on culture
> selected.
>
> It works good for Session.Get<>, but looks like filters are not working when
> I'm using Session.Query<>.
> It fails with error NHibernate.HibernateException : More than one row with
> the given identifier was found: 7, for class: Entities.Employee
>
> Can you suggest how to make filter work with one-to-one mapping?
> Thanks
>
> Please see details below and unit-tests attached.
>
> *Tables:*
> People
> ======
> Id int PK
> Name
>
> Employees
> =========
> Id int PK
> Person int FK(People.Id)
> Role
> CultureCode
>
> *Mapping*
>  <class name="Employee" table="Employees">
>     <id name="Id">
>       <generator class="native" />
>     </id>
>
>     <property name="Role" />
>     <property name="CultureCode">
>       <column name="CultureCode" sql-type="char(2)" />
>     </property>
>
>     <many-to-one name="Person" unique="true" column="Person"  />
>     <filter name="CultureFilter"  condition=":cultureCode = CultureCode"/>
>   </class>
>
>   <class name="Person" table="People">
>     <id name="Id">
>       <generator class="native" />
>     </id>
>     <property name="Name" />
>     <one-to-one name="Employee" class="Employee" constrained="true"
> property-ref="Person" fetch="join"/>
>   </class>
>
>   <filter-def name="CultureFilter">
>     <filter-param name="cultureCode" type="System.String" />
>   </filter-def>
>
> *Classes *
>     public class Person
>     {
>         public virtual int Id { get; set; }
>         public virtual string Name { get; set; }
>
>         public virtual Employee Employee { get; set; }
>     }
>
>     public class Employee
>     {
>         public virtual int Id { get; set; }
>         public virtual string Role { get; set; }
>         public virtual string CultureCode { get; set; }
>
>         public virtual Person Person { get; set; }
>     }
>
>  tests.cs
> 2KViewDownload

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to