如何在代码中配置NHibernate SessionFactory

时间:2018-08-14 12:42:24

标签: c# nhibernate fluent-nhibernate

我是NHibernate的新手,我正在尝试根据“学习NHibernate 4”一书对其进行配置。但是,我对如何配置它感到困惑。我有一个名为Connection的类,但是当我尝试使用它时,NHibernate告诉我找不到'HbmMapping'。

class Connection
    {
        public Connection() 
        {
            var cfg = new Configuration();
            cfg.DataBaseIntegration(x =>
            {
                x.Dialect<PostgreSQLDialect>();
                x.Driver<NpgsqlDriver>();
                x.ConnectionString = "Server=127.0.0.1; Port=5433; User Id=smartwarehouse; Password=$smart#2018;Database=warehouse;";
                x.ConnectionReleaseMode = ConnectionReleaseMode.OnClose;
                x.LogSqlInConsole = true;
                x.LogFormattedSql = true;


            }).AddMapping(GetMappings());

        }
          // here is Hbm dosn't find from library
     private HbmMapping GetMappings() 
        {



        }
    }

enter image description here

它给了我另外两个选择,就像这里

enter image description here

1 个答案:

答案 0 :(得分:1)

This可能是解决此问题的更好资源。您通常会告诉它映射在程序集级别的位置...

.AddFromAssemblyOf<YourEntity>();

...因此在添加/删除映射时,无需更改代码。

例如,我的SessionProvider有点像这样:

Config = new NHibernateConfig();
Config.Configure(); // read config default style

Fluently
     .Configure(Config)
     .Mappings(
         m => m.FluentMappings.AddFromAssemblyOf<UserMap>()
...

我没有.hbm文件,因为我使用ClassMap的派生词。但是,只要在AddFromAssemblyOf方法中指定的类型与.hbm文件在同一程序集中,则它应该起作用。像这样:

Fluently
    .Configure(Config)
    .Mappings(
        m => m.HbmMappings.AddFromAssemblyOf<ATypeInYourMappingAssembly>()