Fluent NHibernate 中的 schemaExport 是什么?

2024-01-12

我很想知道更多关于此代码的方式以及执行时的预期结果。

        /// <summary>
        /// Sets up NHibernate, and adds an ISessionFactory to the given
        /// container.
        /// </summary>
        private void ConfigureNHibernate(IKernel container)
        {
            // Build the NHibernate ISessionFactory object
            var sessionFactory = FluentNHibernate
                .Cfg.Fluently.Configure()
                .Database(
                    MsSqlConfiguration.MsSql2008.ConnectionString(
                        c => c.FromConnectionStringWithKey("ServicesDb")))
                .CurrentSessionContext("web")
                .Mappings(m => m.FluentMappings.AddFromAssemblyOf<SqlCommandFactory>())
                //.ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(true, true))
                .ExposeConfiguration(cfg =>
                                         {
                                             var schemaExport = new SchemaExport(cfg);
                                             schemaExport.Drop(true, true);
                                             schemaExport.Create(true, true);
                                         })
                .BuildSessionFactory();

            // Add the ISessionFactory instance to the container
            container.Bind<ISessionFactory>().ToConstant(sessionFactory);

            // Configure a resolver method to be used for creating ISession objects
            container.Bind<ISession>().ToMethod(CreateSession);

            container.Bind<ICurrentSessionContextAdapter>().To<CurrentSessionContextAdapter>();
        }

现在我知道它的大部分在做什么,但我更有兴趣了解更多关于这部分的信息;

.ExposeConfiguration(cfg =>
                          {
                              var schemaExport = new SchemaExport(cfg);
                              schemaExport.Drop(true, true);
                              schemaExport.Create(true, true);
                           })

理想情况下我期望schemaExport.Drop(true, true);删除数据库架构并schemaExport.Create(true, true);重新创建它。现在是SchemaExport有关数据库模式 http://www.quackit.com/sql_server/sql_server_2008/tutorial/sql_server_database_schemas.cfm据我们所知?我问这个问题是因为当我使用上述配置运行应用程序时出现错误:

There is already an object named 'AllUsers' in the database. at schemaExport.Create(true, true);

AllUsers是我作为架构一部分的数据库视图之一

按要求附加答案

为了修复该错误,我添加了SchemaAction.None();到 UserMap 如下所示。

public class UserMap : VersionedClassMap<User>
{
    public UserMap()
    {
        Table("AllUsers"); //This is the database view which was causing the error
        SchemaAction.None(); // This was added to fix the porblem

        Id(x => x.UserId).CustomType<Guid>();            
        Map(x => x.Firstname).Not.Nullable();
        Map(x => x.Lastname).Not.Nullable();            
        Map(x => x.Email).Nullable();
        Map(x => x.Username).Not.Nullable();
    }
}

该错误表明 Schemaexport 尝试创建 AllUsers 两次,很可能是因为有一个 AuxiliaryDatabase 对象来创建视图和一个 Entity Mapping 来使用它。放SchemaAction.None()在 AllUsers 映射中。

Also:

.ExposeConfiguration(cfg =>
                      {
                          var schemaExport = new SchemaExport(cfg);
                          schemaExport.Drop(true, true);
                          schemaExport.Create(true, true);
                       })

可以缩短为

.ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, true))

因为 Create 总是在创建之前丢弃,所以它会按原样复制丢弃。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Fluent NHibernate 中的 schemaExport 是什么? 的相关文章

  • 如何读取扩展文件属性/文件元数据

    因此 我按照教程使用 ASP net core 将文件 上传 到本地路径 这是代码 public IActionResult About IList
  • 向 Nhibernate 发出 SQL 查询

    如何将此 SQL 查询发送给 Nhibernate SELECT Customer name FROM Company INNER JOIN Customer ON Company CompanyId Customer CompanyId
  • 如何为 C 分配的 numpy 数组注册析构函数?

    我想在 C C 中为 numpy 数组分配数字 并将它们作为 numpy 数组传递给 python 我可以做的PyArray SimpleNewFromData http docs scipy org doc numpy reference
  • 将 System.Windows.Input.KeyEventArgs 键转换为 char

    我需要将事件参数作为char 但是当我尝试转换 Key 枚举时 我得到的字母和符号与传入的字母和符号完全不同 如何正确地将密钥转换为字符 这是我尝试过的 ObserveKeyStroke this new ObervableKeyStrok
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • 使用 C 语言使用 strftime() 获取缩写时区

    我看过this https stackoverflow com questions 34408909 how to get abbreviated timezone and this https stackoverflow com ques
  • 无法在 Windows 运行时组件库的 UserControl 中创建依赖项属性

    我想在用户控件内创建数据可绑定属性 这个用户控件包含一个 Windows 运行时组件 项目 我使用下面的代码来创建属性 public MyItem CurrentItem get return MyItem GetValue Current
  • 获取 WPF 控件的所有附加事件处理程序

    我正在开发一个应用程序 在其中动态分配按钮的事件 现在的问题是 我希望获取按钮单击事件的所有事件 因为我希望删除以前的处理程序 我尝试将事件处理程序设置为 null 如下所示 Button Click null 但是我收到了一个无法分配 n
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 私有模板函数

    我有一堂课 C h class C private template
  • 如何对 Web Api 操作进行后调用?

    我创建了一个 Web API 操作 如下所示 HttpPost public void Load string siteName string providerName UserDetails userDetails implementat
  • Process.Start() 方法在什么情况下返回 false?

    From MSDN https msdn microsoft com en us library e8zac0ca v vs 110 aspx 返回值 true 表示有新的进程资源 开始了 如果由 FileName 成员指定的进程资源 St
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi

随机推荐

  • WooCommerce:按产品类别划分的自定义购物车项目计数

    I found 这个脚本 https docs woothemes com document show cart contents total 这允许我在 WooCommerce 中的购物车图标上方显示购物车内容总数 a class car
  • 在 Windows 上使用 C++ 获取当前用户名

    我正在尝试创建一个程序 使用 C 在 Windows 上检索当前用户的用户名 我试过这个 char userName getenv LOGNAME stringstream ss string userNameString ss lt lt
  • 无法缩进 UITableViewCell 子类

    我对 UITableViewCell 进行了子类化 以创建带有一个按钮和 2 个标签的自定义单元格 使用 Dave Mark 的 Beginning iPhone Development 中概述的模式从 xib 加载单元格定义 这是基本代码
  • Entity Framework Core 是否支持 Union?

    我正在尝试使用 union 查询 EF Core 中的多个表 如下所示 但它不允许 请找到该查询 并附上 net core框架提供的错误提示上的图像 var query context Brand Select x gt new Brand
  • SWT 日期时间格式更改

    我正在使用 DateTime SWT 组件 它在显示时具有美国格式 mm dd yyyy 有什么方法可以将格式更改为 dd mm yyyy 吗 DateTime uses http dev eclipse org mhonarc lists
  • 使用 XPath 选择命名空间中的元素

    我想选择具有给定命名空间 前缀 的文档中最顶层的元素 更具体地说 我的 XML 文档要么以 html body 在 XHTML 命名空间中 开头 要么以特定命名空间中的多个元素之一开头 我实际上想删除 html body 并只返回正文内容或
  • jQuery 自动完成,将成功数据传递给 select 方法

    我有 json 响应 它有一些属性 我已经为列表创建了一个数组 当我单击列表项时 一些输入将由项目 ID 填充 为此 我正在考虑将完整的数据对象传递给 select 方法 然后如果单击列表中的某个项目 我将在数据对象中搜索 id 如果找到
  • beans 和 Jackson 库的问题

    HI 我正在使用 json 文件 如下所示 SourceFile videos KobeAlleyOop flv ExifTool ExifToolVersion 8 22 Warning Truncated mdat data Syste
  • 星号 (*) 在 VSCodestasks.json 中不起作用

    当我尝试运行具有多个模块的 C 项目时 它默认只编译选定的模块 我尝试编辑tasks json来编译文件夹中的每个C和头文件 但它只是将星号作为星号传递到我的命令行 我编辑了tasks json并尝试使用以下输出构建项目 Starting
  • Kotlin 的具体化类型对于 JVM 上的原语是否不正确?

    如果 Kotlin 函数调用具体化了一个原语 比如说Int 通过 类是装箱原语的类 而不是未装箱版本的类 inline fun
  • 使用 GCC 语句表达式的匿名函数

    这个问题并不是很具体 这确实是为了丰富我自己的 C 语言 我希望其他人也能发现它很有用 免责声明 我知道很多人都会有这样的冲动 如果你想尝试函数式编程 那么就使用函数式语言 我在需要链接到许多其他 C 库的嵌入式环境中工作 并且没有太多空间
  • 如何在不打补丁的情况下本地化Python的argparse模块?

    当消息的某些部分是用户语言而其他部分是英语时 本地化的命令行应用程序看起来很奇怪 我不知道当我从源代码安装 Python 3 时是否搞砸了任何东西 似乎没有 mo文件 所以argparse 总体而言 没有本地化意识 API 似乎也没有提供本
  • 如何在 Android 的 SD 卡中设置代理自动配置 (PAC) 文件

    打扰一下 我使用以下命令将文件 proxy pac 推送到 SD 卡 adb push C Users zuokang li Documents proxy pac sdcard 我尝试在 android 中设置代理自动配置 所以我设置了
  • 在 Python 中循环 Protocol Buffers 属性

    我想要帮助递归地循环协议缓冲区消息中包含的所有属性 子对象 假设我们不知道它们的名称 或者有多少个 作为示例 请从 google 网站上的教程中获取以下 proto 文件 message Person required string nam
  • Matplotlib Xticks 条形图中的值

    我有这段代码 我正在尝试制作一个图表 列表中的所有值都是正确的 但是 我在 x 轴上遇到问题 首先 前两个价格变动之间存在差距 我阅读了他们网站上的所有 matplotlib 但找不到任何对这个问题有用的东西 我对 xticks 函数很困惑
  • Powershell 3.0:“获取音量”的替代方案

    我正在尝试获取计算机上每个硬盘卷的各种属性 我正在使用 cmdletget volume然后通过它走过foreach 但 Windows Server 2008 中不存在该 cmdlet 有人知道替代方案吗 我只需要驱动器号 objectI
  • WPF 调度程序、后台工作人员和很多痛苦

    好吧 这可能真的很简单 但我尝试的一切似乎都碰壁了 我有一个具有两个属性的视图模型 它们绑定到我的 WPF 表单 bool IsWorking get set ObservableCollection
  • 从tasklet存储在JobExecutionContext中并在另一个tasklet中访问

    我有一个要求 其中一个微线程将目录中的所有文件存储在数组列表中 列表的大小存储在作业执行上下文中 稍后 在另一个步骤中从另一个微线程访问此计数 这是怎么做到的 我尝试存储在作业执行上下文中 在运行时抛出不可修改的集合异常 public Re
  • 为什么评估布尔表达式的普通法则不适合 LINQ?

    在这样的代码中 if insuranceNumberSearch null true ei InsuranceNumber Contains insuranceNumberSearch Trim doSomething where insu
  • Fluent NHibernate 中的 schemaExport 是什么?

    我很想知道更多关于此代码的方式以及执行时的预期结果