Mar*_*ers 5 nhibernate orm naming-conventions fluent-nhibernate
在我正在开发的当前应用程序中,我正在使用Fluent NHibernate来配置NHibernate以用作ORM.我希望能够为应用程序中使用的所有表名添加前缀,这样,如果我使用的数据库已经在为另一个应用程序提供服务,则两个应用程序之间不存在命名冲突.
因此,例如,如果我想为Portal_每个表添加前缀,那么Users表就会变成Portal_Users.
当然,我知道如何在每个映射文件中配置每个表名,但这对我正在尝试做的事情来说并不是一个很好的解决方案.如果我想更改前缀,我将被迫更改每个映射文件.我希望能够在我的代码或配置中的单个位置为所有表名添加(或更改)前缀.
如何使用NHibernate(或Fluent NHibernate)为应用程序中的所有表名添加前缀?
为了流畅的实施..
public class AutoPersistenceModelGenerator : IAutoPersistenceModelGenerator
{
public AutoPersistenceModel Generate()
{
var mappings = new AutoPersistenceModel();
mappings.AddEntityAssembly(typeof(User).Assembly).Where(GetAutoMappingFilter);
mappings.Conventions.Setup(GetConventions());
.....
private Action<IConventionFinder> GetConventions()
{
return c =>
{
c.Add<PrimaryKeyConvention>();
c.Add<ReferenceConvention>();
c.Add<HasManyConvention>();
c.Add<TableNameConvention>();
Run Code Online (Sandbox Code Playgroud)
......
public class TableNameConvention : IClassConvention
{
public void Apply(FluentNHibernate.Conventions.Instances.IClassInstance
instance)
{
instance.Table(Inflector.Net.Inflector.Pluralize("Portal_" +
instance.EntityType.Name));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1094 次 |
| 最近记录: |