为什么schemaexport生成2个外键?

问题描述

| 我在SQL Server 2008上使用fluentnhibernate。 我要反对员工
public class Staff : BaseEntity
{
    public virtual string UserName { get; set; }
    public virtual string FirstName { get; set; }
    public virtual string LastName { get; set; }
    public virtual string Email { get; set; }
    public virtual bool Active { get; set; }
    public virtual StaffRole StaffRole { get; set; }
}
和StaffRole
public class StaffRole : BaseEntity
{
    public virtual int RoleId { get; set; }
    public virtual int RoleName { get; set; }
    public virtual IList<Staff> Staffs { get; set; }
}
并相应地映射它们:
public class StaffRoleMap : ClassMap<StaffRole>
{
    public StaffRoleMap()
    {
        Id(x => x.RoleId).Not.Nullable().Length(15);
        Map(x => x.RoleName).Not.Nullable().Length(75);
        HasMany(x => x.Staffs);
    }
}
public class StaffMap : ClassMap<Staff>
{
    public StaffMap()
    {
        Id(x => x.UserName).Not.Nullable().Length(15);
        Map(x => x.FirstName).Not.Nullable().Length(25);
        Map(x => x.LastName).Not.Nullable().Length(25);
        Map(x => x.Email).Not.Nullable().Length(30);
        Map(x => x.Active).Not.Nullable().Default(\"1\");
        References(x => x.StaffRole)
            .ForeignKey(\"FKStaffRole\")
            .Column(\"RoleId\")
            .Cascade.None()
            .Not.Nullable()
            ;
    }
}
当我调用schemaexport时,为什么会为StaffRole生成2个外键?我总是得到RoleId和StaffRole_id。 RoleId是正确的,因为它不可为空,但多余的column / fk可为空。 我在这里想念什么吗?     

解决方法

        是。您必须在关系的一侧设置\“ inverse \”。这等效于在常规nhibernate xml配置中将inverse = true设置为。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...