在FNH中配置多个实体映射

时间:2009-11-17 02:24:58

标签: fluent-nhibernate

我正在尝试在我的FNH配置SessionManager类中添加以下内容。 我有20多个要映射的实体,它们都位于Entities文件夹下的同一个项目中。即。 ProjName.BusinessLogic.Entities 映射类位于ProjName.BusinessLogic.Mappings下 此FNHSessionManager.cs文件位于ProjName.BusinessLogic.DAL

var cfg = MsSqlConfiguration.MsSql2005
                    .ConnectionString(c => c.FromAppSetting("connectionString"));

                isf = Fluently.Configure()
                    .Database(cfg)
                    .Mappings(m => m.FluentMappings.AddFromAssemblyOf<User>())
                    .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Provider>())
                    .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Document>())
                    .BuildSessionFactory();

是否有更好/更短的方式在配置中添加它们而不是全部列出? 我不想将不同项目中的实体分开来创建新的程序集。 或映射到只有1个实体会吗?

这是我的第一个使用FNH的项目,而且是全新的。 我甚至不确定自己是否走在正确的轨道上。

非常感谢您的建议。

2 个答案:

答案 0 :(得分:3)

您只需要为每个程序集提供一个映射类到AddFromAssembyOf<T>,并且将加载该程序集中的所有类映射。

答案 1 :(得分:0)

您无需全部列出。 Fluent配置映射设置以使用程序集中的所有约定。

Fluently.Configure().Mappings(m =&gt; m.FluentMappings.AddFromAssembyOf <T>())
.BuildSessionFactory();

(T)可以是您父程序集ProjName.BusinessLogic中的任何类。 Fluent将从程序集ProjName.BusinessLogic配置映射。