Nhibernate не может добавлять + сохранять элементы в мою коллекцию - PullRequest
1 голос
/ 30 июля 2010

У меня, кажется, есть серьезные проблемы с установлением отношений один ко многим для работы в nhibernate

и мои классы

public class Kitten
{
    public virtual int? Id { get; set; }
    public virtual String Name { get; set; }
}

public class Product 
{
    public Product()
    {
        Kittehs = new List<Kitten>();
    }
    public virtual int? ProductId { get; set; }
    public virtual string ProductName { get; set; }
    public virtual UnitOfMeasure UOM { get; set; }
    public virtual IList<Kitten> Kittehs { get; set; }
}

А вот моя сниппет-программа:

Первый:

 public class ProductRepository
 // snip
    public void Save(Product saveObj)
    {
        using (var session = GetSession())
        {               
            using(var trans = session.BeginTransaction())   
            {
                session.SaveOrUpdate(saveObj);
                trans.Commit();
            }
        }
    }

, а затем вызывающий код:

        var pNew = new Product { ProductName = "Canned Salmon" ,UOM = uomBottle};        
        var tiddles = new Kitten() {Name = "Tiddles"};
        pNew.Kittehs.Add(tiddles);
        productRepository.Save(pNew); //ERROR here

Когда я вызываю productRepository.Save

Я получаю

{"Тип NHibernate.Collection.Generic.PersistentGenericSet1 [Acme.Model.Kitten] не может быть назначен свойству типа System.Collections.Generic.IList1 [Acme.Model.Kitten] сеттера Acme.Model. Product.Kittehs "}

поэтому я предполагаю, что отображение как-то не так, но я не вижу, где.

1 Ответ

2 голосов
/ 30 июля 2010

Ну ... у вас есть набор, а затем список для Acme.Model.Kitten ... Попробуйте посмотреть файлы сопоставления.

Вы используете public virtual IList<Kitten> Kittehs { get; set; } в вашем классе Product, но внутри вашего сопоставления это же свойство сопоставлено с Set.

Карта сумок для IList

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...