Fluent nhibernate 从Fluent Nhibernate获取表名

Fluent nhibernate 从Fluent Nhibernate获取表名,fluent-nhibernate,Fluent Nhibernate,在fluent nhibernate中设置映射后,是否有方法从类类型中获取实体的表名 我在普通的nhiberante中读到过,您可以执行类似于cfg.GetClassMapping(typeof(Employee))的操作。我想做的事情类型检索数据库表名 这可能是标准的吗?或者我将如何实现这一点?嗨,我正在使用它在m$Sql Server上创建全文目录,使用几乎相同的FluentNhibernate映射机制 从配置中,我得到一个persistentClasses列表 this.persisten

在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也可以使用,而且似乎更简单。

流畅的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