如何解决为什么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设置为。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。