在多数据库FluentNhibernate应用程序中如何将实体限制到特定数据库

在多数据库FluentNhibernate应用程序中如何将实体限制到特定数据库,nhibernate,fluent-nhibernate,fluent-nhibernate-mapping,Nhibernate,Fluent Nhibernate,Fluent Nhibernate Mapping,我已经配置好了。 当我运行应用程序时,我看到会话正在所有数据库中创建相同的表。 我尝试在Mapping类中使用以下代码行来限制创建 Schema(“Monkey”)仅为每个数据库将相关表添加到sessionfactory。我会按名称空间将它们分开:“bananadbmap”和“monkeydbmap” 菲罗:谢谢你的解决方案。它似乎解决了我从技术分析中了解到的问题,但我的解决方案中没有认识到使用persistencemodel(model)的方法。我试图用谷歌搜索它,但找不到相应的程序集。我使用

我已经配置好了。 当我运行应用程序时,我看到会话正在所有数据库中创建相同的表。 我尝试在Mapping类中使用以下代码行来限制创建


Schema(“Monkey”)仅为每个数据库将相关表添加到sessionfactory。我会按名称空间将它们分开:“bananadbmap”和“monkeydbmap”


菲罗:谢谢你的解决方案。它似乎解决了我从技术分析中了解到的问题,但我的解决方案中没有认识到使用persistencemodel(model)的方法。我试图用谷歌搜索它,但找不到相应的程序集。我使用了FNH 1.2,它是lambdayes中
m
的一部分,你是对的。我根据你的建议命名了两个类映射。但是循环没有进入if条件
model。添加(type)
replace
IsSubclassOf
IsAssignableFrom
    if exists (select * from dbo.sysobjects where id = object_id(N'Banana.[Banan
a]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table Banana.[Banana]

    if exists (select * from dbo.sysobjects where id = object_id(N'Monkey.[Monke
y]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table Monkey.[Monkey]

    create table Banana.[Banana] (
        Id INT IDENTITY NOT NULL,
       Color NVARCHAR(255) null,
       primary key (Id)
    )
foreach (var dataBase in dataBases)
{
    var model = new PersistenceModel();
    foreach (var type in Assembly.GetExecutingAssembly().GetExportedTypes())
    {
        if (!type.IsInterface && !type.IsAbstract && type.IsSubclassOf(typeof(IMappingProvider)) && type.Namespace.EndsWith(dataBase.Key + "DbMaps"))
        {
            model.Add(type);
        }
    }
    config = Fluently.Configure()
        .Database(MsSqlConfiguration.MsSql2008.ConnectionString(dataBase.Value))
        .Mappings(m => m.UsePersistenceModel(model))
        .BuildConfiguration();
   _allFactories.Add(dataBase.Key, config.BuildSessionFactory());
}