У меня есть вопрос, который может пахнуть запахом кода / дизайна, но я все равно его задам.
Скажем, у меня есть два тривиальных класса ниже:
public class PostOffice
{
public virtual string ZipCode {get; set;}
public virtual string StreetAddress {get; set;}
}
public class Person
{
public virtual in ID {get; protected set;}
public virtual string FirstName {get; set;}
public virtual string LastName {get; set;}
public virtual PostOffice ZipCode {get; set;}
}
и я использовал FluentNHibernate, чтобы установить PostOffice.ZipCode в качестве идентификатора, и предоставил переопределение отображения ниже:
model.Override<Person>(p=> p.References( z=> z.ZipCode, "ZipCode"));
Person.ZipCode в базе данных - это просто VARCHAR, и я обычно пишу некоторый SQLкак
SELECT *
FROM Person
WHERE ZipCode = '90210'
, но если у меня есть сеанс NHibernate и я выполняю что-то вроде следующего:
session.Query<Person>().Where(p=>p.ZipCode == '90210')
, результирующий SQL (довольно печатный) выглядит как
SELECT p.*
FROM Person p INNER JOIN PostOffice o
ON p.ZipCode = o.ZipCode
WHERE o.ZipCode = '90210'
Мой вопрос - если сущности по умолчанию являются отложенными, можно ли указать некоторые свойства сопоставления, чтобы NHibernate генерировал SQL без объединения?Пример тривиален, но в моей реальной ситуации таблица, к которой присоединяются, содержит миллионы строк, поэтому я хотел бы избежать объединения, если это возможно.
Заранее спасибо!