我使用Fluent NHibernate映射创建数据库。在我的映射中,我有以下代码(例如:Case - > Documents):
public class CaseMap : ClassMap<Case>
{
public CaseMap()
{
Table("CASES");
Id(x => x.Id).GeneratedBy.Custom<EntityGuidIdGenerator>().Not.Nullable().Column("ID").CustomSqlType("VARCHAR2(32 BYTE)");
HasMany<Document>(x => x.Documents)
.LazyLoad()
.KeyColumn("CASE_ID")
.Not.Inverse()
//.Not.KeyNullable()
.Not.KeyUpdate()
.Cascade.AllDeleteOrphan();
}
}
public class DocumentMap : ClassMap<Document>
{
public DocumentMap()
{
Table("DOCUMENTS");
LazyLoad();
Id(x => x.Id).GeneratedBy.Custom<EntityGuidIdGenerator>().Not.Nullable().Column("ID").CustomSqlType("VARCHAR2(32 BYTE)");
References(x => x.Case).ForeignKey("FK_CASE_DOCUMENT");
}
}
如示例所示,存在一对多关系。创建数据库后,这些表没有 FK 。我手动尝试,但不能,因为创建的ForeignKey列类型是NVARCHAR2,所以我得到错误。 如何在NHibernate中为ForeignKey列设置数据类型?