代码之家  ›  专栏  ›  技术社区  ›  Johnno Nolan

Nhibernate无法向我的一对多集合添加+保存项目

  •  1
  • Johnno Nolan  · 技术社区  · 14 年前

    我在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时

    我明白了

    所以我假设映射是错误的,但我不知道在哪里。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Johnno Nolan    14 年前

    好。。。你有一个集合,然后是一个列表 Acme.Model.Kitten ... 尝试查看映射文件。

    你用的是 public virtual IList<Kitten> Kittehs { get; set; } 在产品类中,但在映射内部,相同的属性映射到 Set .

    包映射到IList