EntityConnection 和打开的 SqlConnection

2024-03-23

我有一个关于采用 CodeFirst 方法的 EntityFramework 的问题。基于 EntityConnection 源代码和文档,我无法使用已打开的 SqlConnection 创建它。它要求应该关闭。 我们有一些不同的数据库数据层(nHibernate等),如果我们可以在它们之间重用相同的SqlConnection,那就太好了。但 EntityFramework 似乎不允许这样做。我可以将关闭的 SqlConnection 传递给 DbContext,但关闭每个 DbContext 的连接对我来说并不好。

有没有办法重用打开的sql连接?

EDIT

EF 转为开源后,我能够更新它。我更改的唯一行是 System.Data.Entity.Core.EntityClient.EntityConnection 类的构造函数中的行。

if (connection.State != ConnectionState.Closed)
{
//throw new ArgumentException(Strings.EntityClient_ConnectionMustBeClosed);
}

在我评论抛出异常之后,我可以重用现有打开的SQL Connection,并且在DBContext使用它之后,它不会关闭它,并且它仍然可供其他东西使用。

我的示例代码:

var connection = new SqlConnection(connectionString);
connection.Open();

MetadataWorkspace workspace = GetWorkspace(connection); // I loaded it from the same context, and save it in memory.

EntityConnection eConnection = new EntityConnection(workspace, connection);

using(var context = new EFContext(connection, false))
{
    var someData = context.SomeTable.ToList();
}

connection.Close();

当前不支持将打开的连接传递给上下文,因为上下文内部始终使用EntityConnection http://msdn.microsoft.com/en-us/library/cc679371.aspx如果您检查文档,您会发现传递的商店连接必须处于关闭状态。

解决方法可以是在使用其他数据访问技术之前创建上下文并显式打开连接

objectContext.Connection.Open();

现在您应该可以重用SqlConnection在上下文范围内:

var dbConnection = ((EntityConnection)objectContext.Connection).StoreConnection;

如果您正在使用 DbContext API,我建议您阅读本文 http://blogs.msdn.com/b/diego/archive/2012/01/26/exception-from-dbcontext-api-entityconnection-can-only-be-constructed-with-a-closed-dbconnection.aspx有关如何解决问题的更多详细信息DbContext.

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

EntityConnection 和打开的 SqlConnection 的相关文章

  • 本地计算机上的服务启动然后停止,某些服务如果没有被其他服务或程序使用则自动停止

    我创建了一个示例 Windows 服务并成功安装了我的服务 但是在要启动服务时 我收到以下错误 本地计算机上的此服务启动然后停止 如果其他服务或程序未使用某些服务 则会自动停止 我的配置文件代码
  • 将对象列表打印到控制台

    我创建了一个带有 Listobj 对象类型的列表 并向对象添加了一组值 如何以年龄增长的方式从 newlist 中打印 Listobj 对象 class Listobj int age string name public int Age
  • 实体框架是否支持 SQLClient 连接字符串中的 ApplicationIntent=ReadOnly

    实体框架是否支持应用程序意图 只读 http msdn microsoft com en us library hh205662 aspx在 SQLClient 连接字符串中 它是参考对可用性副本的只读访问 http msdn micros
  • 捕获所有内部异常详细信息的最佳实践是什么? [复制]

    这个问题在这里已经有答案了 记录完整异常详细信息 包括所有可能的内部异常 的最佳实践是什么 目前 我使用以下代码 try some code that throws an exception catch Exception ex do Co
  • 获取已安装的 Windows 应用商店应用程序列表

    有多种方法可以获取控制面板中 添加 删除程序 中已安装应用程序的列表 但我也想从 Windows 应用商店获取已安装应用程序的列表 到目前为止我还没有得到任何东西 有什么方法可以获取从 Windows 应用商店安装的应用程序列表吗 您可以在
  • IEnumerable.GetEnumerator() 和 IEnumerable.GetEnumerator()

    在 net框架中 有一个通用的IEnumerable
  • 使用 AppDomains 并行化非线程安全 DLL

    我有一个非托管 C DLL 我的 NET 应用程序通过 p invoke 使用它 我从这个 DLL 中需要的方法相当耗时 我想并行化方法调用 问题是它使用了一堆静态和全局变量 因此它不是线程安全的 并且无法更改 我的计划是通过从多个 App
  • Microsoft 同步框架 - 双向同步如何工作?

    我有两个客户端 A 和 B 两个客户端都有相同的同步本地数据缓存 如果客户端 A 对记录 X 进行离线编辑 然后客户端 B 也离线编辑记录 X 并与服务器同步 则当客户端 A 与服务器同步时 客户端 B 所做的更改不会反映出来 并且无论进行
  • 如何检测机器是否加入域?

    如何检测计算机是否已加入 Active Directory 域 相对于工作组模式 如果没有必要的话 不要用 pinvoke 来愚弄 参考System DirectoryServices 然后调用 System DirectoryServic
  • 最佳实践:从属性中抛出异常

    什么时候适合从属性 getter 或 setter 中抛出异常 什么时候不合适呢 为什么 关于这个主题的外部文档的链接会很有帮助 谷歌搜索结果出奇的少 Microsoft 在以下位置提供了有关如何设计属性的建议 http msdn micr
  • 将列添加到 ASP.NET Identity 中的 AspNetUserClaims

    我在用着Microsoft AspNet Identity Core 2 2 1在我的解决方案中 我需要将其与另一个应自动添加声明的系统集成 为了跟踪哪些声明是手动添加的以及哪些是由外部系统创建的 我希望在我的AspNetUserClaim
  • Socket.*Async 方法是线程化的吗?

    我目前正在尝试找出最小化 TCP 主服务器中使用的线程数量的最佳方法 以便最大限度地提高性能 由于我最近阅读了大量 C 5 0 的新异步功能 异步并不一定意味着多线程 这可能意味着将有限状态对象分成较小的块 然后通过交替与其他操作一起进行处
  • 实体框架获取前 10 行

    我在 SQL 数据库中有 3 个表 tbl视频 VideoID int PK Title varchar 100 Decription varchar 100 tblTags TagID int PK TagText varchar 100
  • 如何向 addrange select 语句添加异步“await”?

    我有一个这样的函数 public async Task
  • 操纵 setter 以避免 null

    通常我们有 public string code get set 如果最终有人将代码设置为 null 我需要避免空引用异常 我尝试这个想法 有什么帮助吗 public string code get set if code null cod
  • C#中Enum中定义的value__是什么

    What value 可能在这里 value MSN ICQ YahooChat GoogleTalk 我运行的代码很简单 namespace EnumReflection enum Messengers MSN ICQ YahooChat
  • 日期时间的自定义 JavaScriptConverter?

    我有一个对象 它有一个 DateTime 属性 我想通过 AJAX JSON 将该对象从 ashx 处理程序传递回网页 我不想使用第 3 方控件 当我这样做时 new JavaScriptSerializer Serialize DateT
  • 我们可以使用 EWS 托管 API 连接到 Exchange 2016 吗?

    我使用的是 EWS 托管 API 2 2 它的枚举中没有显示 Exchange 版本 2016 我可以看到 Exchange 2013 之前的版本 那么如何连接到 Exchange Server 2016 该 API 是否尚未从 Micro
  • 在 Java 服务器中验证 Windows 用户

    我正在开发一个用 Java 编写的服务器和一个在同一网络上的 Windows 计算机上运行的客户端 用 Net 编写的桌面应用程序 我希望进行一些基本身份验证 以便服务器可以确定运行客户端的用户的用户名 而不需要用户在客户端中重新输入其 W
  • System.IO.Compression 和 ZipFile - 提取并覆盖

    我使用标准 VB NET 库来提取和压缩文件 它也可以工作 但是当我必须提取并且文件已经存在时 问题就出现了 我使用的代码 Imports Imports System IO Compression 崩溃时我调用的方法 ZipFile Ex

随机推荐

  • 使用 PySide2 在 QTableView 中设置文本样式

    我有一个 QTableView 填充了正确的模型 我想根据上下文更改文本的样式 文本 如果括号之间有内容 则这部分文本应更改为绿色 包括括号 并且粗体 只要它不难 如果您可以提供一个片段或超级简单的示例 我将不胜感激 您必须使用一个委托来使
  • CosmosDB C# SDK ProyUrl 缺失

    我正在 NET Core 中开发一个针对 Azure 的容器化微服务项目 docker 因此 我们使用 Azure Cosmos DB 和 CoreSql Api 的 C Cosmos DB SDK v2 4 因为 v3 仅处于预览版 在开
  • 如何从包含 XML 的字符串中删除第一行?

    我有一个包含 XML 的字符串 我想删除它的第一行并将其保存回 String 我怎样才能做到这一点 Thanks 假设您想要删除字符串末尾的新行 您可以执行以下操作 s s substring s indexOf n 1 当没有新的线路时
  • 如何配置 jdee `find-class-source-file` 以与 Cassandra 源树一起使用?

    我正在尝试为我即将开始的 Java 项目设置 Emacs JDEE 但我无法让 JDEE 正常工作 我想要解决的第一个问题是能够跳转到给定类名的源文件 我正在使用卡桑德拉 http cassandra apache orgsource 作为
  • Jquery 点击图像时切换

    我想了解 jquery 切换是如何工作的 我想切换到下一个锚点plr anchor单击带有类的图像go down 数据是使用地图填充的 Jquery代码 go down on click function e plr anchor next
  • C# 在txt文件中搜索字符串

    我想在 txt 文件中找到一个字符串 如果字符串比较 它应该继续读取行 直到我用作参数的另一个字符串 Example CustomerEN search for this string some text which has details
  • 使用 DirectShow 捕获帧并使用 OpenCV 进行处理

    我为视频到图像捕获制作了两种不同的解决方案 并且想知道是否可以将两个世界的优点结合在一起 我目前正在使用 DirectShow 加载 AVI 文件并捕获图像 然而 DirectShow 缺乏图像处理功能并且需要制作额外的滤镜 这让我陷入了困
  • 将数据从一个数据表复制到另一个具有不同结构的数据表的最佳方法

    我正在将数据从 DataTable 复制到另一个具有结构的 DataTable 我必须在循环中对列号进行硬编码 并将数据复制到对象数组中 实现这一目标的最佳方法是什么 IEnumerable
  • 重置张量流流指标的变量

    我有很多流媒体指标 tf metrics accuracy and custom http vict0rsch github io 2018 06 06 tensorflow streaming multilabel f1 流媒体micro
  • 删除嵌入的 YouTube 视频上的注释

    我发现您可以通过添加参数来禁用嵌入式 YouTube 视频上的注释 iv load policy 3到嵌入代码中的 url 例子
  • 带有 ref 对象参数的方法

    嗨 我必须调用具有此签名的方法 int MethodName ref object vIndexKey 如果我尝试用 String c 690 MethodName ref object c 这不起作用 我能怎么做 thanks 你需要这样
  • Google Maps API 3 - 在屏幕上显示所有标记,但保留中心点

    这非常类似于这个问题 https stackoverflow com questions 2818984 google map api v3 center zoom on displayed markers 我想确保所有标记都以当前缩放级别
  • 展开操作视图时导航抽屉图标(汉堡包和箭头)动画

    我在用着AppCompat and Toolbar 我确保当导航抽屉图标从汉堡包转变为箭头时会有动画 反之亦然 我使用以下技术https stackoverflow com a 26469738 72437 https stackoverf
  • 使用boost创建线程池

    是否可以使用boost的线程创建线程池 我正在查看 boost 的库 但找不到线程池管理器 或类似的东西 有办法做到吗 tnx 我知道答案已被接受 如果您现在需要这个 并且您懒得编写自己的线程池 您可以尝试使用带有并发提示的 boost a
  • Phoenix 频道:向特定客户端发送推送

    您好 我正在尝试使用 Elixir phoenix 重新实现 Whatsapp 功能 我在计算以下内容时遇到问题 如果聊天室中的所有人都收到了消息 我想向消息所有者发送 已收到 状态 以便他可以显示双勾号 但是 如何向某一特定客户端进行广播
  • 如何使用 .yml 文件更新现有 Conda 环境

    如何使用另一个 yml 文件更新预先存在的 conda 环境 当处理具有多个需求文件的项目时 这非常有用 即base yml local yml production yml etc 例如 下面是一个base yml文件有 conda fo
  • Gremlin 删除所有顶点

    我知道如何在 Gremlin 中通过 id 删除顶点 但现在我需要清理数据库 如何删除多个顶点 删除1v是这样的 ver g v 1 g removeVertex ver 我的意思是类似SQL的东西TRUNCATE 如何在不删除类的情况下删
  • 使用 pd.read_html 解析 html 表,其中单元格本身包含完整表

    我需要从 html 解析一个表 该表在较大的表中嵌套有其他表 如下所示pd read html 每个嵌套表都会被解析 然后作为行 插入 连接 我希望将这些嵌套表分别解析为自己的表pd DataFrames并将插入的对象作为相应列的值 如果这
  • 我的视频没有关键帧,怎么可能?

    当我在视频上运行以下行时 它仅输出 P 帧和 B 帧 没有 I 帧 ffprobe select streams v show frames show entries frame pict type of csv 00000 MTS 视频怎
  • EntityConnection 和打开的 SqlConnection

    我有一个关于采用 CodeFirst 方法的 EntityFramework 的问题 基于 EntityConnection 源代码和文档 我无法使用已打开的 SqlConnection 创建它 它要求应该关闭 我们有一些不同的数据库数据层