У меня есть компонент на объекте, который может быть нулевым.Это работает в модульном тесте с базой данных InMemory, но не работает с файловой базой данных SQLite.Я использую логический флаг, чтобы указать, был ли установлен компонент, но это похоже на хак.
Это ошибка NHibernate или SQLite?Или я что-то упустил?
Вот мои сопоставления, лишенные бизнес-ценности:
public sealed class EntityMap : ClassMap<Entity>
{
public EntityMap()
{
Not.LazyLoad();
Id(m => m.Uid);
Map(m => m.HasComponent).Not.Nullable();
Component(m => m.Component).ColumnPrefix("Component");
}
}
public sealed class MyComponentMap : ComponentMap<MyComponent>
{
public MyComponentMap()
{
Map(c => c.SomeBasicProperty).Nullable();
HasMany(c => c.ListOfValues).AsList(li => li.Column("Number"))
.Component(part =>
{
part.Map(s => s.Name);
part.Map(s => s.Value);
}
.Table("ComponentValues")
.Cascade.AllDeleteOrphan().Not.LazyLoad();
}
}
С базой данных памяти компонент на объекте равен нулю, когда все столбцы для него равны нулю.Это то, что я ожидаю.При использовании файловой базы данных компонент пуст.Поэтому я не могу использовать entity.Component==null
, чтобы проверить, был ли компонент уже установлен.