Problems with Nhibernate and linq

I get the following expression:

_senderRepos.Get(s => s.User.Email == fromAddress); 

that leads to

 could not resolve property: User.Email of: Module.Fax2Pdf.MailToFax.Models.Sender 

Grade:

 public class Sender { public virtual int Id { get; set; } public virtual Site Site { get; set; } public virtual User User { get; set; } } 

display:

 <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true"> <class name="Module.Fax2Pdf.MailToFax.Models.Sender, Module.Fax2Pdf" table="fax_allowed_senders"> <id name="Id" column="id"> <generator class="sequence"> <param name="sequence">fax_allowed_senders_id_seq</param> </generator> </id> <many-to-one column="site_id" name="Site" /> <many-to-one column="user_id" name="User" /> </class> </hibernate-mapping> 

And the DO user class has the Email property in the mapping file. What am I doing wrong?

Update, user mapping

  <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="false"> <class name="Gate.Users.User, Gate.Models" table="users"> <id name="Id" column="id"> <generator class="sequence"> <param name="sequence">users_id_seq</param> </generator> </id> <many-to-one column="site_id" name="Site" /> <property name="FirstName" column="first_name" type="String" length="30"/> <property name="LastName" column="last_name" type="String" length="30"/> <property name="CanDelete" column="can_delete" type="boolean" /> <property name="Email" column="email" type="String" length="255"/> <property name="Department" column="department" type="String" length="30"/> <property name="Title" column="title" type="String" length="30"/> <many-to-one class="Gate.Extensions.Extension, Gate.Models" column="extension_id" name="Extension" /> <property name="Status" column="status" type="integer" /> <property name="CreatedAt" column="created_at" /> <property name="UpdatedAt" column="updated_at" /> <property name="TimeZone" column="timezone" type="integer" /> <property name="MiddleNames" column="middle_names" type="string" /> <property name="NamePrefix" column="name_prefix" type="string" /> <property name="NameSuffix" column="name_suffix" type="string" /> <property name="DateOfBirth" column="dob" /> <property name="RemovedAt" column="removed_at" /> <property name="ProxyMedia" column="proxy_media" type="boolean" /> </class> </hibernate-mapping> 
+4
source share
2 answers

I apologize. I used the QueryOver Get method in the repository and Query for everything else. It works when I switched to Query .

0
source

What if you first called .Expand() on your IQueryable ?

So, if you have a session, it might look like this:

 var senders = (from sender in session.Query<Sender>().Expand("User") where sender.User.Email == fromAddress select sender); 

Unfortunately, this requires importing the NHibernate extension method.

+1
source

Source: https://habr.com/ru/post/1334528/


All Articles