如何使用FluentNHibernate创建ISessionFactory

如何使用FluentNHibernate创建ISessionFactory,nhibernate,orm,fluent-nhibernate,nhibernate-mapping,Nhibernate,Orm,Fluent Nhibernate,Nhibernate Mapping,在MyProject.Data项目中,我有一个名为mappings的文件夹,其中包含所有映射 namespace MyProject.Data.Mappings { public class EmployeeMap : ClassMap<Employee> { public EmployeeMap() { Id(x => x.Id); Map(x => x.FirstName)

在MyProject.Data项目中,我有一个名为mappings的文件夹,其中包含所有映射

namespace MyProject.Data.Mappings {
    public class EmployeeMap : ClassMap<Employee>
    {
        public EmployeeMap()
        {
            Id(x => x.Id);
            Map(x => x.FirstName).Not.Nullable().Length(100);
            Map(x => x.LastName).Not.Nullable().Length(100);
        }
    } }
名称空间MyProject.Data.Mappings{
公共类EmployeeMap:ClassMap
{
公共雇员地图()
{
Id(x=>x.Id);
Map(x=>x.FirstName).Not.Nullable().Length(100);
Map(x=>x.LastName).Not.Nullable().Length(100);
}
} }
在MVC项目中的web.config中:

  <connectionStrings>
    <add name="db" connectionString="Data Source=localhost\SQLExpress;Initial Catalog=MyDB;Integrated Security=True"/>
  </connectionStrings>

在global.asax.cs中,我想创建ISessionFactory:

var nhConfig = Fluently.Configure().Database(MsSqlConfiguration.MsSql2008
   .ConnectionString(c => c.FromConnectionStringWithKey("db")))
   .Mappings(m => m.FluentMappings.AddFromAssemblyOf<?????>())
   .BuildConfiguration();
ISessionFactory SessionFactory = nhConfig.BuildSessionFactory();
var nhConfig=fluntly.Configure().Database(MsSqlConfiguration.MsSql2008
.ConnectionString(c=>c.FromConnectionString WithKey(“db”))
.Mappings(m=>m.FluentMappings.AddFromAssemblyOf())
.BuildConfiguration();
ISessionFactory SessionFactory=nhConfig.BuildSessionFactory();
我需要一个:
.Mappings(m=>m.FluentMappings.AddFromAssemblyOf())
对于每个映射文件


谢谢,

不,这是为了告诉FNH要查找所有映射的程序集。只要指定一个,你就可以开始了

因此,如果所有映射都位于同一程序集中,那么下面的代码将适用于您

var nhConfig = Fluently.Configure().Database(MsSqlConfiguration.MsSql2008
.ConnectionString(c => c.FromConnectionStringWithKey("db")))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<EmployeeMap>())
.BuildConfiguration();
var nhConfig=fluntly.Configure().Database(MsSqlConfiguration.MsSql2008
.ConnectionString(c=>c.FromConnectionString WithKey(“db”))
.Mappings(m=>m.FluentMappings.AddFromAssemblyOf())
.BuildConfiguration();

否,这是为了告诉FNH要查找所有映射的程序集。只要指定一个,你就可以开始了

因此,如果所有映射都位于同一程序集中,那么下面的代码将适用于您

var nhConfig = Fluently.Configure().Database(MsSqlConfiguration.MsSql2008
.ConnectionString(c => c.FromConnectionStringWithKey("db")))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<EmployeeMap>())
.BuildConfiguration();
var nhConfig=fluntly.Configure().Database(MsSqlConfiguration.MsSql2008
.ConnectionString(c=>c.FromConnectionString WithKey(“db”))
.Mappings(m=>m.FluentMappings.AddFromAssemblyOf())
.BuildConfiguration();

您的意思是用MyProject.Data.Mappings.EmployeeMap替换“?”,并且对所有其他映射都可以吗?@Kris-I是的,如果所有映射都在同一个程序集中(很可能都在同一个项目中),则指定其中一个类型将导致加载该程序集,并读取所有类型,以及所有要动态添加的fluent映射。您的意思是用MyProject.Data.mappings.EmployeeMap替换“?”,并且对所有其他映射都可以吗?@Kris-I是的,如果所有映射都在同一个程序集中(很可能是在同一个项目中),则指定其中一种类型将导致加载该程序集,读取所有类型,并动态添加所有fluent映射。