Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Amr AminОтветов: 2

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

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

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

collectionsfluent-nhibernatenhibernate-mapping

Ответы

Ответ 1 · рейтинг 1 · gillyb

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

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

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

Ответ 2 · Puppy

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы