У меня ситуация, когда одна из моих таблиц самонастраивается сама по себе. Первичный ключ одной строки (родительский) может использоваться как внешний ключ для другой строки (дочерний элемент), а этот столбец внешнего ключа содержит null для таких строк, у которых нет родителя. Что-то вроде этого:Извлечение записей с нулевым значением - свободно nhibernate
table: Settings_LocationType
++++++++++++++++++++++++++++++++++++++++++++++++
LocationID | Name | ParentLocationId
++++++++++++++++++++++++++++++++++++++++++++++++
1 Parent 1 null
2 Child 1 1
3 Child 2 1
4 Parent 2 null
Модель: LocationType
public class LocationType
{
public virtual long LocationTypeId { get; set; }
public virtual string Name { get; set; }
public virtual LocationType ParentLocationType { get; set; }
public virtual IList<LocationType> LocationTypes { get; set; }
public LocationType()
{
LocationTypes = new List<LocationType>();
}
}
Mapping: LocationTypeMap
public class LocationTypeMap : ClassMap<LocationType>
{
public LocationTypeMap()
{
Table("Setting_LocationType");
Id(x => x.LocationTypeId).Column("LocationId").GeneratedBy.Sequence("location_type_seq");
Map(x => x.ShortName, "Name").Length(15).Not.Nullable();
References<LocationType>(x => x.ParentLocationType).LazyLoad().Nullable();
HasMany<LocationType>(x => x.LocationTypes).AsBag().KeyColumn("ParentLocationId").KeyNullable().LazyLoad().Inverse().Cascade.SaveUpdate();
}
}
Теперь у меня возникли проблемы в получении этих строк, которые содержат NULL (или сказать, не child) в поле PatentLocationType. Я попытался прохождения нуль как этот repo.Get("ParentLocationType.LocationTypeId", null);
но не работал, но бросил object reference is not set to an instance error.
да я сделал , он тоже не работал, но я думаю, что знаю, почему: посмотрите на sql-запрос, который он генерирует «SELECT LocationId, Name, ParentLocationId FROM Settings_LocationType WHERE ParentLocationId = null». Я думаю, что это можно решить, если кто-то, как я заставляю его заменить «= null» на «is null». есть идеи как это сделать? – Waqas 2010-12-08 11:07:39