我有一个Fluent NHibernate配置,它与两个不同的模式交互 - 一个由FNH生成的新数据库和一个遗留数据库。我使用AutoMapping with Overrides。新数据库中的一个表有一个外键列,它引用了旧数据库中的PK。遗留数据库中的有问题的PK是char(10)
类型。我似乎无法找到一种方法来声明新数据库中的FK列也应该是同一类型 - 它默认为nvarchar(255)
我可以在构建之后手动更改生成的数据库中列的类型,但我希望它构建我期望开始的方式。
以下是一些相关的代码片段(已经简化)
public class SalesOrder
{
public virtual int Id { get; set; }
public virtual AccountingSalesOrder AccountingSalesOrder { get; set; }
public class SalesOrderMappingOverride : IAutoMappingOverride<SalesOrder>
{
public void Override(AutoMapping<SalesOrder> m)
{
m.References(x => x.AccountingSalesOrder).Column("csono")
// #### I would like to use 'CustomSqlType("char(10)")' here,
// but no such method exists
;
}
}
}
public class AccountingSalesOrder
{
public virtual string SalesOrderNumber { get; set; }
public virtual char RevisionNumber { get; set; }
}
public class AccountingSalesOrderOverride : IAutoMappingOverride<AccountingSalesOrder>
{
public void Override(AutoMapping<AccountingSalesOrder> m)
{
m.SchemaAction.None();
m.Schema(PersistenceInfo.AccountingSchema);
m.Table("sosord");
m.Id(x => x.SalesOrderNumber)
.Column("csono")
.CustomType<PaddedStringL10UserType>()
// #### declaring 'CustomSqlType("char(10)")' here does not
// change the result
;
m.Map(x => x.RevisionNumber).Column("crevision");
}
}