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");
}
}
문제는 다음과 같습니다 고양이 나에 사람이있는 경우를 DB에있는 개는 Person.Pet의 유형이 'Pet {PetBroxyBlaBlaBla}'입니다. 그래서 Person을 캐스팅 할 수 없습니다. Cat (Person.Pet as Cat == null)을 입력하십시오. 나는 사람을 얻기 전에 DB에서이 애완 동물을 가질 경우
var person = this.Session.Get<Person>(personId);
// person.Pet as Cat == null
는 그러나 유형은 유효하다 :
var a = new this.Session.Get<Pet>(petId);
var person = this.Session.Get<Person>(personId);
// person.Pet as Cat != null
는 유효한 유형이 속성을 초기화하기 위해서 NHibernate에 말할 수있는 방법이있는가요?