2010-07-11 183 views
0

我在我的项目中使用了Fluent NH,但是我在使用Collection类时遇到了一些问题。下面的代码为我的班用Fluent NHibernate映射集合类型

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:服务”

如何映射任何想法?

在此先感谢。

回答

1

试试这个:

HasMany(x => x.Services) 
    .KeyColumn("Vendor_Id") 
    .AsBag() 
    .Cascade.All() 
    .Not.LazyLoad(); 

它为我的伟大工程!

0

NHibernate不允许映射此类型的集合类。它们必须是一个接口,如IList<T>,因为NHibernate提供它自己的实现。

这个实现显然不符合Services类的接口,所以NHibernate无法映射它。

相关问题