Hello
 
We have received an old application to modernize, so we have upgrade 
nhibernate to version 3.1 and we have begun to replaced a lot of sql and 
hql queries with linq queries but we have a problem with a special mapping. 
The mapping is used to map translations of a text, basically you have a 
"Text" table and a "Translation" table, the translation table contains the 
text table id, the language code and the translated text.
 
The mapping is done with fluent and it maps the "Translation" table to a 
dictionary:
 
HasMany(x => x.Translations)
 .Table("Translation")
 .AsMap<int>("LanguageCode")
 .Element("Translation")
 .KeyColumn("TextId")
 .Cascade.AllDeleteOrphan();

But if we write linq query to search a translation in the dictionary like 
this one:
 
Session.Query<Example>().Where(e=>e.Text.Translations.Any(t=>t.Value==
"Hello")).ToList();

nHibernate throws the following exception: "cannot dereference scalar 
collection element: Value"
 
The hql query that we want to replace with a linq one is like the following 
one:
 
Session.CreateQuery("select e from Example e join e.Text.Translations as 
translation where translation=:text").SetParameter("text","Hello").ToList();

Is there a chance to not change the mapping and convert the query from hql 
to linq? Or we have to change the mapping and create a "translation" entity 
to do it?

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


Reply via email to