2009-05-22 1 views
1

Ниже приведена модель класса и схема Oracle, которые я хотел бы сопоставить с использованием Fluent NHibernate.Fluent NHibernate HasMany в компоненте

public enum EnumA { Type1, Type2, Type3 }; 
public class ClassB 
{ 
    public virtual string Property1 { get; set; } 
    public virtual string Property2 { get; set; } 
} 

public class ClassA 
{ 
    public virtual int ID { get; set; } 
    public virtual string Name { get; set; } 
    public virtual IDictionary<EnumA, IList<ClassB>> MyDictionary { get; set; } 
} 

TableA (НОМЕР (38) ID ПК, VARCHAR2 (255) Имя)
TableB (НОМЕР (38) ID ПК FK, НОМЕР (38) Тип PK, VARCHAR (255) prop1, VARCHAR (255) Prop2)

Как определить класс отображения Fluent NHibernate?
Я не против вводить новый класс домена, если это необходимо. Я попытался следующие:

public class ClassB 
{ 
    public virtual string Property1 { get; set; } 
    public virtual string Property2 { get; set; } 
} 

public class classC 
{ 
    public virtual EnumA EnumA { get; set; } 
    IList<ClassB> ClassBList { get; set; } 
} 

public class ClassA 
{ 
    public virtual int ID { get; set; } 
    public virtual string Name { get; set; } 
    public virtual IDictionary<EnumA, classC> MyDictionary { get; set; } 
} 

со следующим отображением класса

public ClassAMap() 
    { 
     WithTable("ClassA"); 
     Id(x => x.ID); 
     Map(x => x.Name); 

     HasMany(x => x.MyDictionary).AsMap<EnumA>(d => d.EnumA).Component(c => 
     { 
      c.HasMany(e => e.ClassBList).Component(f => 
       { 
        f.Map(x => x.Property1); 
        f.Map(x => x.Property1); 
       }); 
     }); 
    } 

Однако это не создает действующую конфигурацию. Может ли кто-нибудь помочь?

+0

Я не уверен, что это применимо напрямую, но см. Мой ответ здесь: http://stackoverflow.com/questions/1875466/auto-mapping-a-idictionarystring-myclass-with-fluent-nhibernate/2807566#2807566 –

ответ

0

Класс B не является компонентом A, это связанный объект с его собственной идентификацией (идентификатор, тип), поэтому он не может логически быть компонентом, поскольку компоненты не имеют собственной идентификации (PK) в противном случае они будут отдельными сущностями.

 Смежные вопросы

  • Нет связанных вопросов^_^