2010-01-19 2 views
2

Nhibernate in Action을 읽었지만 다형성 컬렉션 매핑에 대한 섹션은이 작업을 수행하는 방법에 대해서는 너무 짧습니다.nhibernate에서 추상 클래스 컬렉션을 매핑하는 방법

은 내가 오류를 받고 있지 않다 위의 코드를 다음 코드

[Class] 
[Discriminator(Column="MachineType",TypeType=typeof(string))] 
public abstract class Machine 
{ 
    [Property] 
    public string Name{get;set;} 
} 

[Subclass(DiscriminatorValue="Heavy",ExtendsType=typeof(Machine))] 
public class HeavyMachine : Machine 
{ 
    [Property] 
    public int Weight { get; set; } 
} 

[Subclass(DiscriminatorValue="Fast",ExtendsType=typeof(Machine))] 
public class FastMachine : Machine 
{ 
    [Property] 
    public float Speed { get; set; } 
} 

[Class] 
public class Module 
{ 
    List<Machine> machines = new List<Machine>(); 

    [Bag(Name = "Machines", Cascade = "all", Lazy = false, Inverse=true)] 
    [Key(1, Column = "Machine")] 
    [OneToMany(2, ClassType = typeof(Machine))] 
    public IList<Machine> Machines 
    { 
     get 
     { 
     return machines.AsReadOnly(); 
     } 
     private set 
     { 
     machines = value.ToList(); 
    } 
    } 
} 

을 가지고 있지만 모듈에서 기계의 컬렉션 데이터베이스에서 내 개체를 불러 오는 한 후 비어 있습니다. Machine 유형의 등록 정보가 올바르게 리턴 되었기 때문에 Machine (및 그 서브 클래스)의 맵핑은 정상적으로 보입니다.

내 추상 클래스 모음을 매핑하는 데 필요한 Nhibernate.Mapping.Attributes는 무엇입니까?

미리!

답변

1

좋아 해결책을 찾았습니다. IList 매핑에서 "Inverse = true"태그를 제거한 후 작동했습니다.

관련 문제