C# NHibernate类地图<;T>;代码未执行
我正在建立一个新项目,让NHibernate与structuremap一起工作……诸如此类。我正在使用类映射的NHibernate.Mapping.ByCode.Conformist设置。没有错误发生,但当我在会话上查询时,数据库中存在特定类型的记录,不会返回任何结果。经过进一步检查,我为这些类型设置的映射似乎没有执行。这是我为structuremap连接东西的代码。我可以确认它正在被执行C# NHibernate类地图<;T>;代码未执行,c#,nhibernate,nhibernate-mapping,structuremap,C#,Nhibernate,Nhibernate Mapping,Structuremap,我正在建立一个新项目,让NHibernate与structuremap一起工作……诸如此类。我正在使用类映射的NHibernate.Mapping.ByCode.Conformist设置。没有错误发生,但当我在会话上查询时,数据库中存在特定类型的记录,不会返回任何结果。经过进一步检查,我为这些类型设置的映射似乎没有执行。这是我为structuremap连接东西的代码。我可以确认它正在被执行 public class OrmRegistry : Registry { public OrmR
public class OrmRegistry : Registry
{
public OrmRegistry()
{
var sessionFactory = BuildSessionFactory();
For<ISessionFactory>().Singleton().Use(sessionFactory);
For<ISession>().HybridHttpOrThreadLocalScoped().Use(s => sessionFactory.OpenSession());
}
public ISessionFactory BuildSessionFactory()
{
var cfg = new Configuration().DataBaseIntegration(db =>
{
db.ConnectionStringName = "LocalSqlServer";
db.Dialect<MsSql2008Dialect>();
db.Driver<SqlClientDriver>();
db.KeywordsAutoImport = Hbm2DDLKeyWords.AutoQuote;
db.IsolationLevel = IsolationLevel.ReadUncommitted;
db.BatchSize = 500;
}).AddAssembly(Assembly.GetExecutingAssembly());
if(HttpContext.Current != null)
{
cfg.CurrentSessionContext<WebSessionContext>();
}
else
{
cfg.CurrentSessionContext<ThreadStaticSessionContext>();
}
return cfg.BuildSessionFactory();
}
}
公共类或注册表:注册表
{
公共或注册
{
var sessionFactory=BuildSessionFactory();
For().Singleton().Use(sessionFactory);
For().HybridHttpOrthReadLocalScope().Use(s=>sessionFactory.OpenSession());
}
公共ISessionFactory BuildSessionFactory()
{
var cfg=new Configuration().数据库集成(db=>
{
db.ConnectionStringName=“LocalSqlServer”;
db.方言();
db.Driver();
db.KeywordsAutoImport=Hbm2DDLKeyWords.AutoQuote;
db.IsolationLevel=IsolationLevel.ReadUncommitted;
db.BatchSize=500;
}).AddAssembly(Assembly.getExecutionGassembly());
if(HttpContext.Current!=null)
{
cfg.CurrentSessionContext();
}
其他的
{
cfg.CurrentSessionContext();
}
返回cfg.BuildSessionFactory();
}
}
我几乎可以肯定,我只是错过了一些非常明显的东西,但我已经看了几个小时,没有任何成功。几天前我也被精简了,所以我周围没有同事来查看它。看起来您已经初始化了配置,但是映射呢?您需要像这样初始化映射(如果使用约定): 另一个例子是,如果您正在使用映射类(来自此):
一次完成。美好的它现在工作得很好。谢谢你的帮助。
var mapper = new ConventionModelMapper();
// TODO: define conventions here using mapper instance
// just an example on how I have been using it
var entities = ... // get all entity types here
cfg.AddDeserializedMapping(mapper.CompileMappingFor(entities), "MyMappings");
return cfg.BuildSessionFactory();
var mapper = new ModelMapper();
var mappingTypes = typeof (InvoiceMapping).Assembly.GetExportedTypes()
.Where(t => t.Name.EndsWith("Mapping")).ToArray();
mapper.AddMappings(mappingTypes);
cfg.AddMapping(mapper.CompileMappingForAllExplicitlyAddedEntities());
return cfg.BuildSessionFactory();