- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
“EntityConnection 只能用关闭的 DbConnection 构造”这是我在尝试构建提供开放连接的实体连接时遇到的问题。有一个 transactionscope 打开,我不想打开一个新连接,否则事务将被提升为 dtc 事务,因为我的理解是,如果我在多个 entityConnections 上使用单个 SqlConnection,我不需要 DTC。
所以,我的代码大概是这样的。
提前致谢...
using (TransactionScope transactionScope = new TransactionScope())
{
using (SqlConnection dwConn = GetDWConnection(user))
{
dwConn.Open();
// I need to do some SQlConnection specific actions first
//EntityConnection specific actions next
Func1(dwConn);
Func2(dwConn); //similar to Func1()
Func3(dwConn); //Similar to Func1()
}
}
Func1(SqlConnection dwConn)
{
using (EntityConnection conn = GetSQLEntityConnection(sqlConnection))
{
ObjectContext objectContext = (ObjectContext)Activator.CreateInstance(objectContextType, new object[] { conn });
//few actions
}
}
private EntityConnection GetSQLEntityConnection(SqlConnection sqlConnection)
{
//few steps
EntityConnection entityConnection = new EntityConnection(entityConnectionStringBuilder.ToString());
EntityConnection sqlEntityConnection = new EntityConnection(entityConnection.GetMetadataWorkspace(),sqlConnection);
return sqlEntityConnection;
}
最佳答案
Jakub 完全正确。您既不能创建 DbContext
也不能创建 EntityConnection
并将打开的 DbConnection
传递给它们。
根据 Diego B Vega’s post这个问题在 EF 6 发布之前不会得到解决(here 你可以投票支持它)
解决方法是在涉及它的任何操作之前打开已经初始化的 EntityConnection
。
给定 ObjectContext
,您可以像这样打开 EntityConnection
:
((EntityConnection)objectContext.Connection).Open();
在 DbContext
的情况下,EntityConnection
可从底层 ObjectContext
获得。代码可能是这样的:
class MyDbContext : DbContext
{
public MyDbContext (DbConnection connection)
: base (connection, contextOwnsConnection: true)
{
((IObjectContextAdapter)this).ObjectContext.Connection.Open();
}
// …
}
class Program
{
public static void Main()
{
var connection = new SqlConnection(CONNECTION_STRING);
using (var database = new MyDbContext(connection))
{
Assert.IsTrue(connection.State == ConnectionState.Open);
}
Assert.IsTrue(connection.State == ConnectionState.Closed);
}
}
关于.net - EntityConnection 只能用关闭的 DbConnection 构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7194106/
我有一个关于 EntityFramework with CodeFirst 方法的问题。基于 EntityConnection 源代码和文档,我无法使用已打开的 SqlConnection 创建它。它
关于管理 EntityContext 生命周期有很多问题, 例如Instantiating a context in LINQ to Entities 我得出的结论是,实体上下文应被视为一个工作单元,
“EntityConnection 只能用关闭的 DbConnection 构造”这是我在尝试构建提供开放连接的实体连接时遇到的问题。有一个 transactionscope 打开,我不想打开一个新连
我有一个使用 EF CTP5 的应用。 在这种特殊情况下,我需要降级到一些经典的 ADO.NET(以便在存储过程中读取多个结果集,这是 EF 不支持的)。 因此,我尝试使用 EntityConnect
例如: SqlConnection connection = new SqlConnection(efContext.Connection...?) connection.Open(); etc..
出于集成测试目的,我想在测试夹具设置中手动创建并打开 EntityConnection。调用 Open() 方法时失败并出现以下异常: System.Data.ProviderIncompatible
创建 EF4 EntityConnection 的成本如何?我正在使用 SQL Compact 创建一个 EF4 桌面应用程序,用户将能够使用“文件打开”对话框打开数据库文件。然后我的代码构建一个 E
我在使用 EntityConnection 时收到此错误,我不知道如何解决。使用 ObjectContext 时,我可以设置属性 DefaultContainerName 并且它可以工作,但现在我不知
(这曾经是一个由两部分组成的问题,但由于第二部分确实很重要,所以我决定将其分成两个单独的帖子。请参阅 Using Serialization to copy entities between two
我的大部分数据库操作都使用 Linq2Entity。然而,对于数据库创建、表创建和初始数据插入,我使用纯 SQL 文件。因此我需要一个 SqlConnection 和一个 EntityConnecti
我是一名优秀的程序员,十分优秀!