我有这些课程:
class A
{
public virtual Guid Id { get;set; }
public virtual B Data { get; set; }
}
class B
{
public IList<byte[]> InnerData1 { get; set; } // (1)
public IList<C> InnerData2 { get; set; } // (2)
}
class C
{
public int Value1 { get; set; }
public int? Value2 { get; set; }
}
以及 A 类的以下映射:
Id(x => x.Id).GeneratedBy.Guid();
Component(x => x.Data,
m =>
{
m.HasMany(x => x.InnerData1).Element("InnerData1").Not.LazyLoad(); // (1)
m.HasMany(x => x.InnerData2).Element("InnerData2").Not.LazyLoad(); // (2)
});
由于设置 (1) 工作正常,它会自动创建一个表并正确引用它,我对 (2) 有一个问题,它引发了异常:
Could not determine type for: (...), for columns: NHibernate.Mapping.Column(InnerData1)
为什么它创造了一切正常IList<byte[]>
并且有问题with IList<C>
?我是否必须为 C 设置单独的映射?没有其他更简单的方法吗?我不希望在 C 中向我的模型添加任何额外的 ID 列。