C# Fluent NHibernate-自动架构构建

C# Fluent NHibernate-自动架构构建,c#,asp.net,sql,nhibernate,fluent-nhibernate,C#,Asp.net,Sql,Nhibernate,Fluent Nhibernate,好的,我有一个数据库,但里面没有表。我有一些实体类。我正在尝试设置Fluent NH以使用自动模式导出进行自动映射 首先,这是可能的,对吗 第二,如果是这样,我做错了什么: private ISessionFactory CreateSessionFactory() { return Fluently.Configure() .Database(MsSqlConfiguration.MsSql2005 .Con

好的,我有一个数据库,但里面没有表。我有一些实体类。我正在尝试设置Fluent NH以使用自动模式导出进行自动映射

首先,这是可能的,对吗

第二,如果是这样,我做错了什么:

   private ISessionFactory CreateSessionFactory()
    {
        return Fluently.Configure()
            .Database(MsSqlConfiguration.MsSql2005
                .ConnectionString(c => c.Is(@"Data Source=foo;Initial Catalog=bar;Integrated Security=True")))
            .Mappings(m => m.AutoMappings.Add(AutoPersistenceModel.MapEntitiesFromAssemblyOf<Employee>()
                                                  .Where(t => t.Namespace.Contains("Entities"))))
            .ExposeConfiguration(BuildSchema)
            .BuildSessionFactory();
    }

    private void BuildSchema(Configuration cfg)
    {
        new SchemaExport(cfg).Create(false, true);
    }
私有ISessionFactory CreateSessionFactory()
{
流畅地返回。Configure()
.数据库(MsSqlConfiguration.MsSql2005
.ConnectionString(c=>c.Is(@“数据源=foo;初始目录=bar;集成安全性=True”))
.Mappings(m=>m.AutoMappings.Add(AutoPersistenceModel.MapEntitiesFromAssemblyOf()中的AutoPersistenceModel.MapEntitiesFromAssemblyOf)
.Where(t=>t.Namespace.Contains(“实体”))
.ExposeConfiguration(构建架构)
.BuildSessionFactory();
}
私有void BuildSchema(配置cfg)
{
新建SchemaExport(cfg).Create(false,true);
}
我在上面的“.Where”行中得到一个错误“对象引用未设置为对象的实例”。如果去掉.Where条件,我会得到一个错误“不能对ContainsGenericParameters为true的类型或方法执行后期绑定操作。”

编辑:


一些附加信息:我更改了.Where语句,以明确列出要包括哪些实体。例如“.Where(t=>t.Name.Contains(“Employee”)”等。当我这样做时,我得到了一个关于缺少依赖项(NHibernate.ByteCode.Castle)的错误。当我解决了这个问题时,它工作得很好。我仍然不明白为什么会这样。我相信NHibernate.ByteCode.Castle程序集是用来在NHibernate中创建代理类的

我猜当您尝试创建架构或配置时,需要对代理生成器进行引用。这就是为什么添加引用可以解决您的问题

您可以在此处阅读一些关于NHibernate代理的信息: