2016-07-22 10 views
2

Ich versuche, eine Einfügung in eine Datenbank durchzuführen. Ich habe die folgenden zwei Entitäten:Fließende nHibernate "Nicht-Null-Eigenschaft verweist auf einen Null- oder Transientenwert" mit Fremdschlüssel

USER:

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(); 
     } 
    } 
} 

Und Userdescription:

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(); 
     } 
    } 
} 

Und meine JSON, die ich durch sieht wie folgt passieren:

{ 
    "Email": "[email protected]", 
    "Username": "Something123", 
    "UserDescription": { 
     "Firstname": "John", 
     "Lastname": "Doe" 
    } 
} 

Ich habe versucht, eine Einfügung in User zu machen, in der Hoffnung, dass es herunterfallen und auch in die Child-Tabelle UserDescription einfügen würde, aber das hat nicht funktioniert. Stattdessen füge ich zuerst in den Benutzer ein und füge dann in UserDescription ein (nicht sicher, ob dies ideal ist).

Wie dem auch sei, bekomme ich folgende Fehlermeldung, wenn ich versuche, in Userdescription einzufügen, nachdem ich erfolgreich auf Benutzer einfügen:

nicht-null-Eigenschaft verweist auf einen null oder transiente Wert Users.Entities.UserDescription.User

Irgendwelche Vorschläge?

Antwort

0

Falls jemand interessiert ist, habe ich die ".Constrained()" in der UserDescription Mapping entfernt und das schien zu funktionieren. Obwohl ich nicht weiß, ob das die beste Lösung ist!

Verwandte Themen