SaveOrUpdate()上的集合不能为null

时间:2012-04-13 09:50:27

标签: c# .net nhibernate exception-handling

当我尝试在数据库中保存新用户时,我遇到了问题。我的代码:

if (!user.ValidateUser(username, password))
{
    using (var session = NHibernateHelper.OpenSession())
    {
        User u = new User();
        u.Name = username;
        u.Email = string.Empty;
        u.Password = "123456";
        using (var transact = session.Transaction)
        {
            session.SaveOrUpdate(u); // I have an exception in this line
            transact.Commit();
        }
    }
}

错误:

  

收藏不能为空。参数名称:c

如何在数据库中保存新用户?

P.S。 session.Save(user1);也让我有这个例外。

更新:用户类

public partial class User
{
    public User()
    {
        this.CurrentTestings = new HashSet<CurrentTesting>();
        this.ResultsSet = new HashSet<ResultTesting>();
    }

    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual string Password { get; set; }
    public virtual string Email { get; set; }

    public virtual ICollection<CurrentTesting> CurrentTestings { get; set; }
    public virtual ICollection<ResultTesting> ResultsSet { get; set; }
}

2 个答案:

答案 0 :(得分:3)

也许类“用户”有一些参考,例如:

class User
{
  IList<T> T;
}

尝试使用约束器初始化此字段:

class User
{
  public User
  {
    T = new List<T>();
  }
  IList<T> T;
}

答案 1 :(得分:1)

在我的情况下,我需要将集合initzialize从Hashset更改为Hashedset。