Fluent nhibernate 从Fluent Nhibernate获取表名
在fluent nhibernate中设置映射后,是否有方法从类类型中获取实体的表名 我在普通的nhiberante中读到过,您可以执行类似于Fluent nhibernate 从Fluent Nhibernate获取表名,fluent-nhibernate,Fluent Nhibernate,在fluent nhibernate中设置映射后,是否有方法从类类型中获取实体的表名 我在普通的nhiberante中读到过,您可以执行类似于cfg.GetClassMapping(typeof(Employee))的操作。我想做的事情类型检索数据库表名 这可能是标准的吗?或者我将如何实现这一点?嗨,我正在使用它在m$Sql Server上创建全文目录,使用几乎相同的FluentNhibernate映射机制 从配置中,我得到一个persistentClasses列表 this.persisten
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也可以使用,而且似乎更简单。流畅的nhibernate方式:
var userMetadata = sessionFactory.GetClassMetadata(typeof(SomeEntity)) as NHibernate.Persister.Entity.AbstractEntityPersister;
var cols = userMetadata.KeyColumnNames;
var table = userMetadata.TableName;
其中sessionFactory的类型为IsSessionFactory。假设您在某个时候已经这样做了:
FluentNHibernate.Cfg.FluentConfiguration fluentConfig = FluentNHibernate.Cfg.Fluently.Configure();
那么你所要做的就是:
string tableName = fluentConfig.BuildConfiguration().GetClassMapping(typeof (One of your data entities)).Table.Name;
在我实现一个通用的“GetAllItems”例程时效果很好。如果其他人在VB.NET中这样做,那么这只是一个改变强制转换语法的例子-DirectCast(sessionFactory.GetClassMetadata(typeof(SomeEntity)),AbstractEntityTyperSister.TableName