S#arp体系结构,NHibernate具有类型化id的多个数据库

S#arp体系结构,NHibernate具有类型化id的多个数据库,nhibernate,fluent-nhibernate,s#arp-architecture,Nhibernate,Fluent Nhibernate,S#arp Architecture,我的SharpArchitecture项目中有多个数据库,并遵循此处概述的指南: 一切正常,除了我的实体有指定的ID。在尝试启动应用程序时,我得到一个“数据库已配置”。通过一些挖掘,我得到: 标识类型必须为整型(整型、长型、uint型、ulong型) 这是在实例.GeneratedBy.HiLo(“1000”)期间抛出的;这很奇怪,因为我的映射是一个指定的id和一个字符串。它似乎忽略了我分配的id映射: [SessionFactory(DataGlobals.SecondDbFactoryKe

我的SharpArchitecture项目中有多个数据库,并遵循此处概述的指南:

一切正常,除了我的实体有指定的ID。在尝试启动应用程序时,我得到一个“数据库已配置”。通过一些挖掘,我得到:

标识类型必须为整型(整型、长型、uint型、ulong型)

这是在
实例.GeneratedBy.HiLo(“1000”)
期间抛出的;这很奇怪,因为我的映射是一个指定的id和一个字符串。它似乎忽略了我分配的id映射:

[SessionFactory(DataGlobals.SecondDbFactoryKey)]
public class SecondDbEntityMap: IAutoMappingOverride<SecondDbEntity>
{
    public void Override(AutoMapping<SecondDbEntity> mapping) {
        mapping.Id(x => x.AssignedIdProperty).GeneratedBy.Assigned();
    }
}
[SessionFactory(DataGlobals.SecondDbFactoryKey)]
公共类SecondbEntityMap:IAutoMappingOverride
{
公共无效替代(自动映射){
mapping.Id(x=>x.AssignedIdProperty).GeneratedBy.Assigned();
}
}

这种映射应该是有效的,对吗?我的第一个数据库中有两个分配的id实体,它们以相同的方式映射(SAN会话工厂属性),工作正常。我似乎无法理解这一点。

我认为这是因为HiLo生成器只能与整数类型一起工作-因此,如果分配的ID是字符串类型,则需要其他方法来生成标识。

HiLo是一种必须分配ID的生成器策略,如果你是自己分配的,你想用分配的策略代替

Sharp Arch附带了一组默认的fluentNh自动映射,我猜您需要检查加载自动映射的引导程序代码,然后调整或覆盖它们。如果您还有问题,请告诉我,我很乐意看一下您的代码

[SessionFactory(DataGlobals.SecondDbFactoryKey)]
public class SecondDbEntityMap: IAutoMappingOverride<SecondDbEntity>
{
    public void Override(AutoMapping<SecondDbEntity> mapping) {
        mapping.Id(x => x.AssignedIdProperty).GeneratedBy.Assigned();
    }
}