2010-07-30 41 views
1

我似乎得到一個重大的問題,很多關係NHibernate的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]不能分配給類型系統的屬性.Collections.Generic.IList1 [Acme.Model.Kitten] Acme.Model.Product.Kittehs的二傳手「}

所以我假設的映射是錯誤的莫名其妙,但我看不到的地方。

回答

2

那麼......你有一個Set,然後是一個列表Acme.Model.Kitten ......試着看看你的映射文件。

您在您的產品類中使用public virtual IList<Kitten> Kittehs { get; set; } ,但在您的映射中,此相同的屬性映射到Set

箱包映射到IList

+0

它應該是什麼?一個包? – 2010-07-30 13:33:48

+0

是的,一個包...更多關於它的地方:http://codebetter.com/blogs/karlseguin/archive/2008/01/02/foundations-of-programming-part-6-nhibernate.aspx – 2010-07-30 13:36:59

相關問題