在流利的nhibernate中设置映射后,是否有一种方法从类类型获取实体的表名?从Fluent Nhibernate获取表名
我已经阅读了常规nhiberante你可以做一些像cfg.GetClassMapping(typeof (Employee))
。我想做一些事情来检索数据库表名。
这是可能的标准或我会怎么做呢?
在流利的nhibernate中设置映射后,是否有一种方法从类类型获取实体的表名?从Fluent Nhibernate获取表名
我已经阅读了常规nhiberante你可以做一些像cfg.GetClassMapping(typeof (Employee))
。我想做一些事情来检索数据库表名。
这是可能的标准或我会怎么做呢?
您好我正在使用它在M $ Sql Server上创建全文目录,使用几乎相同的FluentNhibernate映射机制。
从配置我得到persistentClasses列表
this.persistenClasses = configuration.ClassMappings;
接下来,我通过搜索这个列表中的泛型类型映射类的找我persistenClass类
var genericDefinition = mappingClass.BaseType.GetGenericArguments()[0];
var matchedPersistClass = FindPersistedClassFrom(genericDefinition);
private PersistentClass FindPersistedClassFrom(Type genericDefinition)
{
return persistentClasses.FirstOrDefault(x => x.EntityName == genericDefinition.FullName);
}
因此,有对PersistentClass你轻松拥有访问表名称,属性,db字段等。
TableName = matchedPersistClass.Table.Name,
cfg.GetClassMapping(typeof(Employee)).Table.Name
也可以工作,而且似乎更简单。
似乎不适用于流畅的配置对象 – Ha11owed 2012-03-23 01:50:26
的功能NHibernate方式:
sessionFactory.GetClassMetadata(typeof(SomeEntity)) as NHibernate.Persister.Entity.AbstractEntityPersister;
var cols = userMetadata.KeyColumnNames;
var table = userMetadata.TableName;
其中的sessionFactory是类型ISessionFactory的。
如果其他人在VB.NET中这样做 - 这只是一个改变铸造语法的情况 - DirectCast(sessionFactory.GetClassMetadata(typeof(SomeEntity)),AbstractEntityPersister).TableName – phillyd 2015-12-10 10:19:26
假设你已经在某一点做到了这一点:
FluentNHibernate.Cfg.FluentConfiguration fluentConfig = FluentNHibernate.Cfg.Fluently.Configure();
然后,所有你需要做的是这样的:
string tableName = fluentConfig.BuildConfiguration().GetClassMapping(typeof (One of your data entities)).Table.Name;
我在执行一个通用的“GetAllItems”例行的工作很大。
似乎不适用于流利的nhibernate配置对象 – Ha11owed 2012-03-23 01:50:53