c# - Fluent NHibernate - 自动架构构建

标签 c# asp.net sql nhibernate fluent-nhibernate

好的,我有一个数据库,但里面没有表。我有一些实体类。我正在尝试设置 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);
    }

我在上面的“.Where”行收到错误“对象引用未设置到对象的实例”。如果我取出 .Where 条件,我会收到错误消息“无法对 ContainsGenericParameters 为真的类型或方法执行后期绑定(bind)操作。”

编辑:

一些附加信息:我更改了 .Where 语句以具体概述要包含的实体。 IE。 “.Where(t => t.Name.Contains("Employee")”等。当我这样做时,我收到有关缺少依赖项 (NHibernate.ByteCode.CaSTLe) 的错误。当我解决这个问题时,它工作正常.我仍然不明白为什么这行得通。

最佳答案

我相信 NHibernate.ByteCode.CaSTLe 程序集用于在 NHibernate 中创建代理类。

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

您可以在这里阅读一些关于 NHibernate 代理的信息:http://nhforge.org/blogs/nhibernate/archive/2008/11/09/nh2-1-0-bytecode-providers.aspx

关于c# - Fluent NHibernate - 自动架构构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1215604/

相关文章:

c# - 使用 IQueryable 返回随机行

asp.net - BC30561 : 'Html' is ambiguous, 从命名空间或类型 'System.Web.WebPages, System.Web.Mvc' 导入

sql - 如何将具有实际值的 IN 子句转换为连接子句?

mysql - SQL 中的泛化和分类

c# - 仅在登录页面上设置 SSL 页面

sql - Oracle sql中的if语句

c# - 操作无法完成。无效指针 - Visual Studio 2015 Update 3

c# - 如何从 dll 中的 Web 应用程序引用资源文件

c# - EmguCV C# : FindContours() to detect different shapes

c# - 如何获取非public成员的值