Jeg er bange for, at hans ikke vil virke. Efter design og arten af
Sådan (jeg gør) løse dette problem er lidt anderledes. Jeg har et objekt Language
, Optionen har en samling af sprog
public virtual IList<Language> Languages {get; set;}
Kortlægningen er for eksempel
<bag name="Languages" batch-size="25"
cascade="all-delete-orphan" inverse="true" >
<key column="option_id" />
<one-to-many class="Language" />
<filter name="LanguagFilter" condition=":languageId = LanguageId" />
</bag>
Tricket er i filteret . Dette er en dynamisk version af hvor mapping-attribute (18.1. NHibernate-filtre)
<filter-def name="LanguageFilter" >
<filter-param name="languageId" type="Int32" />
</filter-def>
Derefter kan vi slå filteret til for alle operationer i den aktuelle session. Kun én gang pr. anmodning (hvis webapp), inde i en AOP, hvor vi kender sprog-id'et:
var filter = session.EnableFilter("LanguageFilter");
filter.SetParameter("languageId", theCurrentLanguageIdFromUser);
Og endelig ved vi, at samlingen Languages kun indeholder én post, og vi kan altid få adgang til .First()
. Ikke flere resultater med flere sprog
Se også:https://stackoverflow.com/a/16625867/1679310 , https://stackoverflow.com/a/18479266/1679310