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