【问题标题】:Fluent nHibernate "not-null property references a null or transient value" with Foreign KeyFluent nHibernate“非空属性引用空值或瞬态值”与外键
【发布时间】:2016-11-26 19:49:52
【问题描述】:

我正在尝试插入数据库。我有以下两个实体:

用户:

public class User
{
    private UserDescription _userDescription;

    public virtual uint Id { get; set; }
    public virtual string Email { get; set; }
    public virtual string Username { get; set; }

    public virtual UserDescription UserDescription
    {
        get { return _userDescription; }
        set { _userDescription = value; }
    }

    public virtual void Add(UserDescription userDescription)
    {
        if (_userDescription != null)
        {
            _userDescription.User = null;
        }
        _userDescription = userDescription;
        _userDescription.User = this;
    }

    public class UserMap : ClassMap<User>
    {
        public UserMap()
        {
            Table("users");

            Id(x => x.Id).GeneratedBy.Identity();
            Map(x => x.Email).Not.Nullable();
            Map(x => x.Username).Not.Nullable();

            HasOne(x => x.UserDescription).Cascade.All().LazyLoad();
        }
    }
}

还有用户描述

public class UserDescription
{
    public virtual uint Id { get; set; }
    public virtual User User { get; set; }
    public virtual uint UserId { get; set; }
    public virtual string Firstname { get; set; }
    public virtual string Lastname { get; set; }

    public class UserDescrptionMap : ClassMap<UserDescription>
    {
        public UserDescrptionMap()
        {
            Table("usersdescription");

            Id(x => x.Id).GeneratedBy.Identity();

            Map(x => x.UserId);
            Map(x => x.Firstname);
            Map(x => x.Lastname);

            HasOne(x => x.User).Constrained().ForeignKey();
        }
    }
}

我通过的 JSON 如下所示:

{
   "Email": "Example3@gmail.com",
   "Username": "Something123",
   "UserDescription": {
       "Firstname": "John",
       "Lastname": "Doe"
   }
}

我尝试对 User 进行插入,希望它会向下级联并插入到子表 UserDescription 中,但这不起作用。因此,我先插入用户,然后再插入 UserDescription(不确定这是否理想)。

无论如何,当我成功插入 User 后尝试插入 UserDescription 时出现以下错误:

非空属性引用空值或临时值 Users.Entities.UserDescription.User

有什么建议吗?

【问题讨论】:

    标签: c# mysql asp.net nhibernate fluent-nhibernate


    【解决方案1】:

    如果有人感兴趣,我删除了 UserDescription 映射中的“.Constrained()”,这似乎有效。虽然我不知道这是否是最好的解决方案!

    【讨论】:

      猜你喜欢
      • 2010-10-08
      • 1970-01-01
      • 2017-04-25
      • 1970-01-01
      • 2011-12-23
      • 2012-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多