我似乎在让一对多关系在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]无法分配给Acme.Model的System.Collections.Generic.IList1 [Acme.Model.Kitten] setter类型的属性。 Product.Kittehs“}
所以我假设映射是错误的,但我看不到在哪里。
答案 0 :(得分:2)
嗯......你有一个Set,然后是Acme.Model.Kitten
的列表......试着查看你的映射文件。
您正在使用public virtual IList<Kitten> Kittehs { get; set; }
在您的Product类中,但在映射中,此相同属性将映射到Set
。
将地图映射到IList