我在我的项目中使用了Fluent NH,但是在使用Collection类时遇到了一些问题。这是我的课程的代码
public class Vendor
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Services Services { get; set; }
}
public class Services : IList<Service>
{
}
public class Service
{
int id{ get; set; }
int Code { get; set; }
}
这不是将服务列为供应商类中的列表
public virtual IList<Service> Services { get; set; }
我想使用服务集合类。
和映射代码
public class VendorMap : ClassMap<Vendor>
{
public VendorMap()
{
Table("Vendor");
Id(x => x.Id);
Map(x => x.Name);
HasMany<Service>(x => x.Services)
.KeyColumn("Vendor_Id")
.CollectionType<Services>()
.Not.LazyLoad();
}
我收到此错误“自定义类型未实现UserCollectionType:Services”
关于如何映射这个的任何想法?
提前致谢。
答案 0 :(得分:1)
试试这个:
HasMany(x => x.Services)
.KeyColumn("Vendor_Id")
.AsBag()
.Cascade.All()
.Not.LazyLoad();
这对我很有用!
答案 1 :(得分:0)
NHibernate不允许映射此类型的集合类。它们必须是一个接口,如IList<T>
,因为NHibernate提供了它自己的实现。
这个实现显然不符合Services
类的接口,因此NHibernate无法映射它。