EF6 代码优先:如何在启动时从 EDMX 文件加载 DbCompiledModel?

2024-05-08

我想通过将 DbCompiledModel 缓存到磁盘来减少 EF6 中的启动时间。

为 DbContext 编写 EDMX 文件很容易:

EdmxWriter.WriteEdmx(myDbContext, XmlWriter.Create(@"C:\temp\blah.xml"))

将 DbCompiledModel 传递给 DbContext 也很容易:

var db = new DbContext(connectionString, myDbCompiledModel)

然而,似乎没有任何方法可以将 EDMX 文件从磁盘读取到 DbCompiledModel 中!我怎样才能做到这一点?

请注意,我已在这个 EF6 分支版本中使用 EdmxReader 工具成功实现了该解决方案:

https://github.com/davidroth/entityframework/tree/DbModelStore

但是我不愿意在生产环境中使用分支版本。我尝试从该分支中​​提取 EdmxReader 实用程序,但它依赖于我无法访问的 DbCompiledModel 的内部构造函数。

那么,如何从磁盘获取 EDMX 文件并将其转换为 DbCompiledModel?


我测试了是否可以通过序列化 DbCompiledModel 来使其工作。

从 EF 获取它并在构建新上下文时提供它都有效。问题是一切都是私有的,所以它不会序列化任何东西。

如果您可以获得用于序列化私有成员的序列化程序,那么它应该非常简单。

1)在 OnModelCreating 结束时(如果您首先使用代码)您可以执行以下操作

modelBuilder.Build().Compile()

稍微简化,因为您应该提供一些参数

2)序列化那个。对于与私人成员一起工作,请尝试查看JSON.Net:强制序列化所有私有字段和子类中的所有字段 https://stackoverflow.com/questions/24106986/json-net-force-serialization-of-all-private-fields-and-all-fields-in-sub-classe或尝试使用 BinaryFormatter为什么 BinaryFormatter 序列化私有成员而不是 XMLSerializer 或 SoapFormatter ? https://stackoverflow.com/questions/21019093/why-is-the-binaryformatter-serializing-private-members-and-not-the-xmlserializer

3)将其保存到磁盘

4)从磁盘读取文件并将其反序列化为新的DbCompiledModel

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

EF6 代码优先:如何在启动时从 EDMX 文件加载 DbCompiledModel? 的相关文章

随机推荐

  • 当一个模块安装了两个版本时 Perl 会做什么?

    我在正在使用的远程机器上没有 root 访问权限 因此我使用 cpanm 和 local lib 的组合 如下所述here https stackoverflow com a 2980715 1156644将 CPAN 模块安装到我的本地目
  • 提交表单时 ng-required 不起作用

    我在带有 required 属性的输入文本框中包含以下代码 但是当我跳出该字段或提交表单时 它不会阻止表单提交并通知用户该字段是必填字段 div class col sm 8 div
  • Node.js 子进程

    我试图弄清楚这对于 node js 子进程来说是否是一个不错的用例 我有一款多人游戏 人们可以进行 1v1 比赛 我应该为每场比赛使用子进程吗 并不是真的需要 由于节点是基于事件的 并且单个进程将能够处理数千个这样的玩家对 您将为每个这样的
  • 从什么时候起sqlite的持久日志模式成为Android中的默认日志模式?

    从什么时候起sqlite的持久日志模式成为Android中的默认日志模式 我知道Android版本4 1 1 API 16 中的日志模式已经改变 但这并不准确 因为发行说明中不包含此信息 我不知道是否可以在发行说明中找到 如果您认识的人确切
  • 使用jmeter测试多个网站

    如何使用jmeter测试100个不同的网站 来自DMOZ 我认为可以通过将jmeter与脚本集成来完成 基本上 该脚本是告诉 jmeter 从文本或 csv 文件中读取 URL 并将 http 请求采样器更改为文件中的 URL 以运行测试
  • 使用 VBA 清除 Excel 单元格格式而不清除 NumberFormat

    是否可以在不改变 的情况下清除Excel单元格格式和内容 使用VBA NumberFormat 给定的单元格 我尝试过 ClearContents ClearFormats 但 ClearFormats 删除了数字格式细胞也 请建议 你可以
  • 前置条件失败:从 iOS 13.4 开始,在 SwiftUI 中使用 GeometryReader 时输入索引无效

    昨天 我将 XCode 和我的项目升级到 iOS 13 4 我开始在使用 GeometryReaders 的视图周围看到很多失败 除了 前提条件失败 输入索引无效 之外 该错误没有显示任何内容 升级到 13 4 1 后我遇到了完全相同的问题
  • 使用 javascript onchange 下拉菜单

    我有一个简单的下拉菜单 我希望拥有它 以便如果用户选择 有一个婴儿 则消息会更改为 有一个婴儿 但对于任何其他选择 该消息保持不变 什么也没有 但这不起作用 有人可以帮忙吗 请玩我的jsfiddle http jsfiddle net Z9
  • 当 ToString() 具有协作对象时,为什么 WPF 数据绑定不显示文本?

    在一个简单的形式中 我绑定到许多不同的对象 有些放在列表框中 有些放在列表框中 有些放在列表框中 一些在文本块中 其中一些对象具有协作对象 在这些对象上ToString 方法在执行其工作时调用 通常是某种格式化程序 当我单步执行代码时 我发
  • 用Python识别图像

    我对 OCR 识别和 Python 都有点陌生 我想要实现的是从 Python 脚本运行 Tesseract 以 识别 tif 中的某些特定数字 我以为我可以为 Tesseract 做一些培训 但我在 Google 和 SO 上没有找到任何
  • 添加属性的描述

    如何为我的房产添加文字描述 我的代码 private bool SpaceKey public bool SpaceKey get return SpaceKey set SpaceKey value 看看描述 属性 http msdn m
  • 如何使用代码隐藏创建 StackPanel -> 边框 -> 背景

    我正在尝试设置 a 的属性TreeViewItem gt StackPanel在 C 中就像这个问题 https stackoverflow com questions 8203316 adding content to a treevie
  • C# 使用 WebClient 下载分块编码内容

    我编写了一个客户端应用程序 该应用程序应该从网络服务器下载文件 非常简单 using WebClient webClient new WebClient webClient DownloadFile http localhost audio
  • 获取无法使用引导轮播脚本读取未定义的属性“offsetWidth”

    我创建了一个carousel with Bootstrap 3 3它可以在我的本地计算机上运行 但是当我将整个内容上传到服务器上时 其中引导程序js文件与单个文件中的其他文件一起编译 我收到此错误 Cannot read property
  • Python3:如何“不”四舍五入到最接近的偶数?

    我知道Python3的round 函数四舍五入到最接近的偶数 我怎样才能防止这种情况发生并使其像Python2那样从零舍入一半 您可以使用Decimal and ROUND HALF UP from decimal https docs p
  • sympy 中共轭的导数

    当我尝试用 SymPy 区分符号时 我得到以下结果 In x Symbol x In diff x x Out 1 当我将符号与其共轭微分时 结果是 In 55 diff x x conjugate Out 55 0 但是 当我尝试区分符号
  • 具有多个数据源 Oracle 和 H2 的 Spring Boot

    我为我的 Angular 项目开发了一个 Spring Boot RestController 并遇到了问题 在我的休息服务逻辑中 我使用了两个不同的数据库来获取数据 在这里您可以看到数据源配置 应用程序 属性 datasource1 sp
  • 是否可以将 FormData 与图像文件一起从 Angular 6 应用程序发送到 Web API

    是否可以将表单数据与图像文件一起从 Angular 6 应用程序传递到 Web api 应用程序组件 ts onSelectFile event if event target files event target files 0 this
  • Swift 4.2 当键盘显示时使 tableView 的底部向上移动

    尽管我已经进行了搜索 但我对如何最好地解决这个问题感到困惑 我有一个 tableView 其中底部单元格是列表的输入 就像苹果提醒的工作方式一样 当列表中的项目太多时 键盘会覆盖列表 我看不到正在输入的内容 我认为我需要更改表视图的物理大小
  • EF6 代码优先:如何在启动时从 EDMX 文件加载 DbCompiledModel?

    我想通过将 DbCompiledModel 缓存到磁盘来减少 EF6 中的启动时间 为 DbContext 编写 EDMX 文件很容易 EdmxWriter WriteEdmx myDbContext XmlWriter Create C