0
假設我有類:流利NHibernate的一到一個與基類
class Person
{
String FirstName;
String LastName;
Pet Pet;
}
class Pet
{
String Name;
Person Owner;
}
class Cat : Pet
{
Int32 MousesCaught;
}
class Dog : Pet
{
Int32 CatsCaught;
}
和映射:
public class PetMap : IAutoMappingOverride<Pet>
{
public void Override(AutoMapping<Pet> mapping)
{
mapping.HasOne(x => x.Owner).PropertyRef(x => x.Pet).Constrained().Cascade.All();
mapping.JoinedSubClass<Cat>("PetId");
mapping.JoinedSubClass<Dog>("PetId");
}
}
的問題是:如果人有一隻貓或Dog中的Person.Pet的類型是'Pet {PetBroxyBlaBlaBla}'。所以我不能投入Person.Pet來鍵入Cat(Person.Pet as Cat == null)。
var person = this.Session.Get<Person>(personId);
// person.Pet as Cat == null
但是,如果我得到一個人面前得到DB這個寵物的類型是有效的:
var a = new this.Session.Get<Pet>(petId);
var person = this.Session.Get<Person>(personId);
// person.Pet as Cat != null
是否有辦法告訴NHibernate的一個有效的類型來初始化這個屬性?