【发布时间】:2015-01-17 13:29:45
【问题描述】:
我的实体有很多数据源。
public class MyData
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual IList<DataSource> Sources { get; set; }
public MyData(){
Sources = new List<DataSource>();
}
}
我有代表 MyData 实体的值对象的 DataSource 类
public class DataSource
{
public enum SourceEnum { dataOneSrc = 1, dataTwoSrc = 2}
public virtual SourceEnum Source { get; set; }
public virtual string InternalRefNr { get; set; }
}
我正在使用 nhibernate orm 及其通过代码映射的方法。 所以我使用这个链接作为参考映射了值对象。 //http://lycog.com/programming/nhibernate-32-mapping-code-component-mapping/
public static Action<IComponentMapper<DataSource>> Mapping()
{
return c =>{
c.Property(p => p.Source);
c.Property(p => p.InternalRefNr, m =>
{
m.Length(255);
});
};
}
和实体映射使用
public MyData()
{
...
Bag<DataSource>(x => x.Sources,
c => { },
r =>{ r.OneToMany();}
);
}
我得到 Nhibernate.MappingException
{"关联引用未映射的类:My.Model.DataSource"}
【问题讨论】:
-
但是这个异常不是很清楚吗?您也只需映射
DataSource。就是这样 -
我在上面映射了DataSource,public static Action
> Mapping() -
能否请您作为答案发布您将如何映射实体以及值对象列表
-
我通过代码提供了一些映射草稿和亚当柱映射的一些基本链接。这应该有点启发这个问题......
-
感谢您的努力,但我做出了设计选择,将 DataSource 作为值对象(而不是实体)。你对这种方式有什么建议吗?
标签: c# .net nhibernate