下面是一个类模型和一个Oracle模式,我想将它映射到使用Fluent NHibernate。
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; }
}
表A(NUMBER(38)ID PK,VARCHAR2(255)名称)
表B(NUMBER(38)ID PK FK,NUMBER(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 :(得分:0)
B类不是A的一个组成部分,它是一个具有自己身份(ID,Type)的相关实体,因此它在逻辑上不能成为一个组件,因为组件没有自己的身份(PK),否则它们将是独立的实体。