【问题标题】:How create ISessionFactory with FluentNHibernate如何使用 FluentNHibernate 创建 ISessionFactory
【发布时间】:2011-11-11 16:01:48
【问题描述】:

在 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);
        }
    } }

在 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();

我需要一个: .Mappings(m =&gt; m.FluentMappings.AddFromAssemblyOf&lt;?????&gt;()) 每个映射文件?

谢谢,

【问题讨论】:

    标签: nhibernate orm fluent-nhibernate nhibernate-mapping


    【解决方案1】:

    不,这样做的目的是告诉 FNH 要查找哪个程序集来查找所有映射。只需指定任何一个即可。

    因此,如果您的所有映射都位于同一个程序集中,那么下面的代码将为您工作。

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

    【讨论】:

    • 你的意思是替换“????”通过 MyProject.Data.Mappings.EmployeeMap 并且所有其他映射都可以吗?
    • @Kris-I 是的,如果您的所有映射都在同一个程序集中(很可能它们都在同一个项目中),那么指定其中一种类型将导致加载该程序集,读取的所有类型,以及动态添加的所有流畅映射。
    猜你喜欢
    • 2017-10-28
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 2016-06-10
    • 1970-01-01
    • 2017-10-24
    相关资源
    最近更新 更多