Получение записей с нулевым значением - свободный nhibernate - PullRequest
0 голосов
/ 08 декабря 2010

У меня есть ситуация, когда один из моих столов сопоставляется сам с собой. Первичный ключ одной строки (Parent) может использоваться как внешний ключ для другой строки (Child), и этот столбец внешнего ключа содержит нуль для таких строк, у которых нет родителя. Примерно так:

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>();         
        }
}

Отображение: 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 (или, скажем, не дочерние) в поле PatentLocationType. Я попытался передать NULL, как это repo.Get("ParentLocationType.LocationTypeId", null);, но это не сработало, но бросил object reference is not set to an instance error.

Ответы [ 2 ]

0 голосов
/ 13 марта 2012

ОК, я решил, используя Expression.IsNull вместо Expression.Eq при запросе таких LocationType

0 голосов
/ 08 декабря 2010

Вы пробовали:

repo.Get ("ParentLocationType", null)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...