тип коллекции сопоставлений с помощью Fluent NHibernate

Я использовал 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"

Есть идеи, как это отобразить?

Заранее спасибо.


person Amr Amin    schedule 11.07.2010    source источник


Ответы (2)


Попробуй это :

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

У меня отлично работает!

person gillyb    schedule 15.07.2010

NHibernate не позволяет отображать классы коллекций этого типа. Они должны быть интерфейсом, например IList<T>, поскольку NHibernate предоставляет его собственную реализацию.

Эта реализация явно не соответствует интерфейсу класса Services, поэтому NHibernate не может его отобразить.

person Puppy    schedule 04.12.2015