【问题标题】:How to set database schema for namespace in nhibernate如何在 nhibernate 中为命名空间设置数据库模式
【发布时间】:2010-09-13 21:54:28
【问题描述】:
我有一个包含多个模式的数据库:安全、贸易等。
每个 shema 都有多个表。 IE。安全架构有:用户、角色等。
现在,我可以设置 nhibernate 以便我绑定到命名空间的架构。
IE。我的项目中有一个安全命名空间,其中包含用户和角色 POCO。
所以我不会将绑定数据库模式设置为命名空间。
我知道我可以在每个类的映射文件中添加 Schema,但如果我有 ie。 1000 类我必须为每个类指定模式。
请帮忙。
【问题讨论】:
标签:
nhibernate
schema
mapping
【解决方案1】:
您可以在创建 sessionfactory 之前以编程方式执行您想要的操作,如下所示:
var cfg = new Configuration().Configure();
foreach (var pc in cfg.ClassMappings)
{//just an example
pc.Table.Schema = pc.MappedClass.Assembly.GetName().FullName.Substring(0, 3);
}
var sessionFactory = cfg.BuildSessionFactory();
请注意,通常您只构建一次会话工厂,因此性能影响(如果有)只发生一次。
【解决方案2】:
NHibernate 不会神奇地做到这一点。如果您想避免手动更改映射文件,请改用 ConfORM 或 FluentNHibernate 等基于代码的解决方案。