KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a legacy database that I am mapping using NHibernate. The objects of concern are an Account and a list of Notification objects. The objects look like: public class Notification { public virtual int Id { get; set; } public virtual DateTime BatchDate { get; set; } /* other properties */ public virtual Account Account { get; set; } } public class Account { public virtual int Id { get; set; } public virtual string AccountNumber { get; set; } /* other properties */ } The mapping files look like: <class name="Account" table="Account" dynamic-update="true"> <id name="Id" column="AccountID"> <generator class="native" /> </id> <property name="AccountNumber" length="15" not-null="true" /> <!-- other properties --> </class> <class name="Notification" table="Notification"> <id name="Id" column="Id"> <generator class="native" /> </id> <!-- other properties --> <many-to-one name="Account" class="Account" property-ref="AccountNumber" lazy="proxy"> <column name="AcctNum" /> </many-to-one> However, when I create a criteria such as return session.CreateCriteria(typeof(Notification)).List<Notification>(); I am getting a Select N+1 case where each account is loaded even though the Account is never referenced. Why are all of the accounts getting loaded when the many-to-one is mapped as a lazy proxy?
Tags (comma-separated)
Save Edits
Cancel