获取 NHibernate.Hql.Ast.ANTLR.QuerySyntaxException: 'Vacancy is not mapped' 在将通用代码移动到同一解决方案中的通用项目之后
Getting NHibernate.Hql.Ast.ANTLR.QuerySyntaxException: 'Vacancy is not mapped' after moving common code to a Common Project in the same solution
我正在创建另一个共享公共实体的应用程序,因此我将实体和映射移到了这个新的公共项目中。我更改了命名空间,添加了项目依赖项并添加了对这个新的公共项目的引用,但我收到了未映射错误。有没有我遗漏的步骤,比如在启动文件中添加对它的引用之类的?
模型映射器
private ISessionFactory ConfigureNHibernate() {
var cfg = new Configuration();
cfg.DataBaseIntegration(db => {
db.ConnectionString = Configuration.GetConnectionString("MyConnection");
db.Dialect<MsSql2012Dialect>();
db.BatchSize = 500;
db.KeywordsAutoImport = Hbm2DDLKeyWords.AutoQuote;
var mapper = new ModelMapper();
mapper.AddMappings(Assembly.GetExecutingAssembly().GetExportedTypes());
cfg.AddMapping(mapper.CompileMappingForAllExplicitlyAddedEntities());
cfg.AddAssembly("MyProject.Common");
return cfg.BuildSessionFactory();
}
看来问题出在这里了。
var mapper = new ModelMapper();
mapper.AddMappings(Assembly.GetExecutingAssembly().GetExportedTypes());
cfg.AddMapping(mapper.CompileMappingForAllExplicitlyAddedEntities());
cfg.AddAssembly("MyProject.Common");
Assembly.GetExecutingAssembly() 不会成为您的新地图项目程序集。
我总是在一个单独的项目中创建我的域模型并将其传递给 nhibernate 初始化程序。
所以我的 NhibernateInitializer 上有 属性,它采用映射程序集
private Assembly MappingAssembly
{
get { return _mappingAssembly ?? (_mappingAssembly = Assembly.Load(_mappingAssemblyName)); }
}
加载我的映射程序集。
然后当需要在我的映射器中配置它们时,代码是
_mapper.AddMappings(MappingAssembly.GetExportedTypes());
我正在创建另一个共享公共实体的应用程序,因此我将实体和映射移到了这个新的公共项目中。我更改了命名空间,添加了项目依赖项并添加了对这个新的公共项目的引用,但我收到了未映射错误。有没有我遗漏的步骤,比如在启动文件中添加对它的引用之类的?
模型映射器
private ISessionFactory ConfigureNHibernate() {
var cfg = new Configuration();
cfg.DataBaseIntegration(db => {
db.ConnectionString = Configuration.GetConnectionString("MyConnection");
db.Dialect<MsSql2012Dialect>();
db.BatchSize = 500;
db.KeywordsAutoImport = Hbm2DDLKeyWords.AutoQuote;
var mapper = new ModelMapper();
mapper.AddMappings(Assembly.GetExecutingAssembly().GetExportedTypes());
cfg.AddMapping(mapper.CompileMappingForAllExplicitlyAddedEntities());
cfg.AddAssembly("MyProject.Common");
return cfg.BuildSessionFactory();
}
看来问题出在这里了。
var mapper = new ModelMapper();
mapper.AddMappings(Assembly.GetExecutingAssembly().GetExportedTypes());
cfg.AddMapping(mapper.CompileMappingForAllExplicitlyAddedEntities());
cfg.AddAssembly("MyProject.Common");
Assembly.GetExecutingAssembly() 不会成为您的新地图项目程序集。
我总是在一个单独的项目中创建我的域模型并将其传递给 nhibernate 初始化程序。
所以我的 NhibernateInitializer 上有 属性,它采用映射程序集
private Assembly MappingAssembly
{
get { return _mappingAssembly ?? (_mappingAssembly = Assembly.Load(_mappingAssemblyName)); }
}
加载我的映射程序集。
然后当需要在我的映射器中配置它们时,代码是
_mapper.AddMappings(MappingAssembly.GetExportedTypes());