我是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()
{
}
}
它给了我另外两个选择,就像这里
答案 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>()