Fluent NHibernate与可空字段的1:1关系
给定以下模型,我希望能够输入一个新的Fluent NHibernate与可空字段的1:1关系,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,给定以下模型,我希望能够输入一个新的writeofApprovalUser,并使Employee字段为空。这是1:1或空关系 public class WriteOffApprovalUser { public virtual string UserName { get; set; } public virtual Employee Employee { get; set; } } public class Employee { public virtual strin
writeofApprovalUser
,并使Employee
字段为空。这是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");
}
}
这会抱怨员工
为空。如何指定雇员可以为空
另外,是否所有
Id
字段都必须是整数?我们表上的许多键都是字符串。首先,如果将其设置为1:1,则不应为NULL,因为它的设计不正确
但以下是一个如何做到这一点的示例:
1)单向
好的,但实际情况是已经有了一名
员工
,我只想输入WriteOffApprovalUser
,然后在稍后查询关系时输入。我不想添加Employee
端,但总是只有一个Employee
到一个WriteOffApprovalUser
,反之亦然。有意义吗?我发现了这个错误:“FluentNHibernate.Mapping.OneToOnePart”不包含“Nullable”的定义,并且找不到接受“FluentNHibernate.Mapping.OneToOnePart”类型的第一个参数的扩展方法“Nullable”(是否缺少using指令或程序集引用?
您是指延迟加载?对于性能问题或设计,您不需要此实体
也不需要未找到
或忽略
存在??您使用的是什么版本。
using (var session = SessionProvider.GetSession())
{
using (var tx = session.BeginTransaction())
{
var user = new WriteOffApprovalUser() { UserName = "SAMSTR" };
session.Save(user);
tx.Commit();
}
}
HasOne(x => x.Employee)
.Class<Employee>().Nullable().NotFound.Ignore().PropertyRef("UserId");
References(x => x.Category).Column("UserId").Nullable().NotFound.Ignore();