отображение типа коллекции с помощью Fluent NHibernate - PullRequest
0 голосов
/ 11 июля 2010

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

Любые идеи о том, как отобразить это?

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

Ответы [ 2 ]

1 голос
/ 15 июля 2010

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

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

Это прекрасно работает для меня!

0 голосов
/ 04 декабря 2015

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

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

...