1
鉴于以下模型,我希望能够输入新的WriteOffApprovalUser
并使Employee
字段为空。这是1:1或null关系。流利的NHibernate - 1:1与可空字段的关系
public class WriteOffApprovalUser
{
public virtual string UserName { get; set; }
public virtual Employee Employee { get; set; }
}
public class Employee
{
public virtual string EmployeeID { get; set; }
public virtual string EmployeeStatusCode { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual string JobTitle { get; set; }
public virtual string Division { get; set; }
public virtual string Department { get; set; }
public virtual string Location { get; set; }
public virtual string City { get; set; }
public virtual string DeskLocation { get; set; }
public virtual string MailID { get; set; }
public virtual string Phone { get; set; }
public virtual string PreferredName { get; set; }
public virtual string Fax { get; set; }
public virtual string SecCode { get; set; }
public virtual string SupervisorID { get; set; }
public virtual string UserId { get; set; }
}
类映射
public class WriteOffApprovalUserMap : ClassMap<WriteOffApprovalUser>
{
public WriteOffApprovalUserMap()
{
Table("WRITEOFF_APPROVAL_USER");
Id(x => x.UserName).Column("USER_NAME");
//Map(x => x.Employee).Nullable();
HasOne(x => x.Employee)
.Class<Employee>()
.Constrained()
.Cascade.SaveUpdate()
.PropertyRef("UserId");
}
}
public class EmployeeMap : ClassMap<Employee>
{
public EmployeeMap()
{
Table("ADP_EMPLOYEE");
Id(x => x.EmployeeID).Column("EMPLID").GeneratedBy.Native("");
Map(x => x.FirstName).Column("FIRST_NAME");
Map(x => x.LastName).Column("LAST_NAME");
Map(x => x.PreferredName).Column("PREFERRED_NAME");
Map(x => x.UserId).Column("USER_ID");
}
}
查询/保存
using (var session = SessionProvider.GetSession())
{
using (var tx = session.BeginTransaction())
{
var user = new WriteOffApprovalUser() { UserName = "SAMSTR" };
session.Save(user);
tx.Commit();
}
}
这抱怨Employee
为空。我如何指定该员工可以为空?
此外,所有Id
字段必须是整数?我们桌子上的很多按键都是字符串。
OK,但真正发生的是有一个'雇主'已经和我只想进入'WriteOffApprovalUser',然后当我查询关系的时候。我不想添加“员工”一侧,但总是只有一个“员工”到一个“WriteOffApprovalUser”,反之亦然。合理? – Sam 2013-04-10 15:34:54
我得到这个错误:''FluentNHibernate.Mapping.OneToOnePart'不包含'Nullable'的定义,也没有接受'FluentNHibernate'类型的第一个参数的扩展方法'Nullable'。可以找到Mapping.OneToOnePart (您是否缺少使用指令或程序集引用?)' –
Sam
2013-04-10 15:37:08
您的意思是延迟加载?对于性能问题或设计你不需要这个'实体' – IamStalker 2013-04-10 15:37:10