如何在nhibernate中为命名空间设置数据库模式

时间:2010-07-01 19:30:36

标签: nhibernate schema mapping

我有一个包含多个模式的数据库:安全,贸易等 每个shema都有多个表。 IE浏览器。安全架构有:用户,角色等..

现在,我可以设置nhibernate,以便将模式绑定到命名空间。 IE浏览器。我的项目中有一个安全命名空间,其中包含用户和角色POCO。 所以我不会将绑定数据库模式设置为命名空间。 我知道我可以在每个类的maping文件中添加Schema,但是如果我有ie。 1000类我必须为每个clas指定模式。

请帮忙。

2 个答案:

答案 0 :(得分:2)

您可以在创建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();

请注意,通常您只会构建一次会话工厂,因此性能影响(如果有)仅发生一次。

答案 1 :(得分:0)

NHibernate不会神奇地做到这一点。如果您想避免手动更改映射文件,请使用基于代码的解决方案,如ConfORM或FluentNHibernate。