C# NHibernate类地图<;T>;代码未执行

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

我正在建立一个新项目,让NHibernate与structuremap一起工作……诸如此类。我正在使用类映射的NHibernate.Mapping.ByCode.Conformist设置。没有错误发生,但当我在会话上查询时,数据库中存在特定类型的记录,不会返回任何结果。经过进一步检查,我为这些类型设置的映射似乎没有执行。这是我为structuremap连接东西的代码。我可以确认它正在被执行

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