Я не уверен, что понимаю, что вы имеете в виду под «сопоставлением подкласса один-к-одному», но если вы хотите отобразить наследование, когда подклассы имеют свойства, которые не могут быть обнуляемыми, вы можете сделать это в Fluent- NHibernate:
// Domain classes
public class Animal
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
public class Cat : Animal
{
public virtual int WhiskerLength { get; set; }
public virtual int ClawCount { get; set; }
}
public class Dog : Animal
{
public virtual int TailWagRate { get; set; }
}
// Mapping file
public class AnimalMap : ClassMap<Animal>
{
public AnimalMap()
{
Id(x => x.Id)
.WithUnsavedValue(0)
.GeneratedBy.Native();
Map(x => x.Name);
var catMap = JoinedSubClass<Cat>("CatId", sm => sm.Map(x => x.Id));
catMap.Map(x => x.WhiskerLength)
.CanNotBeNull();
catMap.Map(x => x.ClawCount)
.CanNotBeNull();
JoinedSubClass<Dog>("DogId", sm => sm.Map(x => x.Id))
.Map(x => x.TailWagRate)
.CanNotBeNull();
}
}
Поскольку вы хотите, чтобы свойства подклассов были ненулевыми, вы должны использовать способ моделирования наследования для таблицы на класс (join-subclass). Это связано с тем, что для каждой таблицы требуется, чтобы все свойства подкласса обнулялись.
Надеюсь, это поможет.
/ Erik