Rap*_*Rap 1 c# nhibernate-mapping fluent-nhibernate
我们的系统上有用户和人员。每个用户有很多人。但是当用户登录时,我们需要查找他的主要人员记录以填写他的姓名、地址、电话等。
public class Person
{
/// <summary>Every Person belongs to a user.</summary>
public virtual User User { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual string Address { get; set; }
public virtual string Phone { get; set; }
// More methods & Properties
}
public class User : Entity
{
public virtual string Username { get; set; }
public virtual string Password { get; set; }
/// <summary>Every User has a primary person record.</summary>
public virtual Person PrimaryPerson { get; set; }
// More methods & Properties
}
Run Code Online (Sandbox Code Playgroud)
如果没有循环引用,类映射如何查找此内容?
尝试这个:
public class PersonMap : ClassMap<Person>
{
public PersonMap()
{
Table("Persons");
Id(x =>x.Id, "PersonId").GeneratedBy.Identity();
References(x => x.User).Column("UserId").Cascade.All();
Map(x => x.FirstName, "FirstName");
Map(x => x.LastName, "LastName");
Map(x => x.Address, "Address");
Map(x => x.Phone, "Phone");
// More property maps
}
}
public class UserMap : ClassMap<User>
{
public UserMap()
{
Id(x => x.Id, "UserId").GeneratedBy.Identity();
Map(x => x.Username, "Username");
Map(x => x.Password, "Password");
References<Person>(x => x.PrimaryPerson).ForeignKey("PrimaryPersonId").Cascade.All();
}
}
Run Code Online (Sandbox Code Playgroud)
这是假设您的 ID 是自动编号,并且当您更新用户时,您还希望您的 PrimaryPerson 也随之更新。如果不是这种情况,请将 Cascade.All() 更改为 Cascade.None() 。请确保在执行此操作时手动更新 PrimaryPerson,否则如果不这样做,您将在 SubmitChanges() 上收到“对象引用未保存的瞬态实例”。
| 归档时间: |
|
| 查看次数: |
1923 次 |
| 最近记录: |