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 是什么? 的相关文章

  • 集群():是否可以仅检查文件是否已锁定,而不实际获取锁定(如果没有)?

    我的用例如下 我有一个程序 它强制在任何给定时间只能运行它的一个实例 因此在启动时它总是尝试在标准位置获取锁定文件 并在该文件终止时终止已经被锁定 这一切都工作正常 但现在我想用一个新的命令行选项来增强程序 当指定该选项时 将导致程序只打印
  • 如何获取枚举数作为常量?

    From 枚举中定义的项目总数 https stackoverflow com questions 856154 total number of items defined in an enum 我发现我可以使用以下方法获取枚举数 Enum
  • 没有配置身份验证处理程序来处理该方案

    这是一个非常烦人的问题 我在我的 asp net core 项目上设置 cookie 身份验证 有时会出现此错误 有时不会 没有图案 它只是开始抛出错误 然后突然停止 然后再次开始 例外情况是 InvalidOperationExcepti
  • 使用 C 的另一个结构内的灵活长度结构数组

    你好 我正在尝试使用 C 来实现一个简单的结构 2 个盒子 每个盒子包含不同数量的颗粒 main 中传递的粒子的确切数量 我写了以下代码 typedef struct Particle float x float y float vx fl
  • 如何在 sql 2005 或 2008 中使列区分大小写

    是否可以根据列更改默认排序规则 我想让 1 列区分大小写 但其他所有列都不区分大小写 ALTER TABLE ALTER COLUMN允许更改单个列的排序规则 alter table Foo alter column Bar ntext c
  • 将 JavaScript 引擎嵌入到 .NET 中 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 只是想知道是否有人尝试过将任何 js 引擎嵌入并实际集成到 net 环境中 我可以找到并实际使用 经过L
  • 绑定集合的子集

    我有一个ObservableCollection
  • 大小为 k 的非连续子序列的最大值的最小值

    在开始之前 我希望这个问题不是重复的 我发现了几个类似的问题 但它们似乎都没有描述完全相同的问题 但如果它是重复的 我会很高兴看到一个解决方案 即使它与我的算法不同 我一直在尝试回答这个问题 https stackoverflow com
  • 向客户端发送状态码 500 时页面未呈现

    我有一个页面 通用处理程序 我想在该页面上向客户端返回状态代码 500 以指示出现问题 我这样做 Response StatusCode 500 Response StatusDescription Internal Server Erro
  • 对列表中的一系列整数求和

    假设我有一个这样的列表 List
  • 如何使用 itextsharp 更改 PDF 公式的按钮图标?

    我目前正在尝试使用 itextsharp 填写预定义的表单 除了添加图像之外 一切正常 这之前已经在 Adob e 的 FDF 工具包中运行过 该工具包已编译为 NET 1 1 这不再适用于 NET 4 0 我改用了 itextsharp
  • 如何处理文件名中的空格

    我正在尝试迭代本地目录中的文件 foreach string name in Directory GetFileSystemEntries path FileAttrtibutes att File GetAttributes name 文
  • 括号内声明的对象的范围

    如果我声明一个这样的对象 void main myclass objectA anotherclass true true 0 即 我通过直接调用后者的构造函数来创建一个 objectA 和另一个对象 anotherclass anothe
  • TCP/IP 传输期间套接字数据损坏

    当我通过预连接的 TCP IP 套接字发送数据时 我发现数据已损坏 Example Station1 正在向 Station2 发送数据 我已经在发送之前 在 S1 和接收之后 在 S2 打印了数据 以下是消息 S1 发送的数据是ACKS2
  • C# 中的 mshtml.HTMLDocumentClass

    在 C 中 我设法从 InternetExplorer 对象获取整个 HTMLDocumentClass 导航到某个 URL 然而 在 Visual Studio 2008 的调试模式下 该特定 URL 的 HTMLDocumentClas
  • 在for循环中声明和初始化变量

    可以简单写一下吗 for int i 0 代替 int i for i 0 在 C 或 C 中 并且会变量i只能在循环内部访问 它在 C 中有效 它在 C 的原始版本中是不合法的 但在 C99 中被采用为 C 的一部分 当时一些 C 功能被
  • C# 使用 .Equals() 比较两个 double

    我使用 ReShaper 当我用 比较两个双精度值时 它建议我应该使用 Math 具有公差的 ABS 方法 看 https www jetbrains com help resharper 2016 2 CompareOfFloatsByE
  • Web 和 winforms 的 .Net 身份验证

    我有一个为客户端构建的 ASP NET Web 应用程序 它使用默认的 ASP NET 表单身份验证 他们现在请求一个能够 与 Web 应用程序一起工作的桌面 WinForms 应用程序 我已经创建了 Web 服务来访问他们想要从 Web
  • SQL Server 列的默认随机 10 个字符串值

    我有一个专栏rndm在我的桌子上 客人 现在 对于领域Default value or Binding对于表 每当插入新行时 我想自动将 10 个字符的随机字符串插入到该列中作为默认值 该随机字符串不能包含特殊字符 只能包含以下字符a zA
  • 获取线段上最接近另一个点的点[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我想找到线段AB上最接近另一个点P的点 我的想法是 Get a1 and b1由直线公式y1 a1x b1 使用 A 点

随机推荐

  • 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 是什么?

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