我有模型房子有门列表(门代表价值对象)
public class House : Entity<Guid>
{
public int Id { get; set; }
public List<Door> Doors { get; set; }
...
public House(){
Doors = new List<Door>();
}
}
我通过代码方法使用nhibernate映射,所以我尝试映射House
HouseMap.cs
public class HouseMap: ClassMapping<House>
{
public HouseMap()
{
...
Component(c => c.Doors, DoorMap.Mapping());
}
}
DoorMap.cs
public class DoorMap
{
public static Action<IComponentMapper<Door>> Mapping()
{
return c =>
{
c.Property(p => p.Number);
c.Property(p => p.Color);
};
}
}
我在HouseMap.cs上收到错误
组件(c =&gt; c.Doors,DoorMap.Mapping());
无法将LAMBDA表达式转换为类型&#39; STRING&#39;要点它不是代表类型
我在这里做错了什么?非列表值对象的其他映射很好。
答案 0 :(得分:0)
您应该确定使用C#实体的接口:
public class House : Entity<Guid>
{
...
//public List<Door> Doors { get; set; }
public virtual IList<Door> Doors { get; set; }
此处描述了参考集的映射:
Adam Bar的基于此,Doors
集合映射应如下所示(我更喜欢.Bag()
与IList
,而不是.Set()
更具体{{ {1}})
ISet
这些是其他可用的设置(摘自上面的链接):
Bag(x => x.Doors, c =>
{
...