1

我将 Linq2Entity 用于我的大部分数据库操作。然而,对于数据库创建、表创建和初始数据插入,我使用纯 SQL 文件。因此我需要一个SqlConnection 和一个EntityConnection。不幸的是,实体框架开始抱怨 Sql Server 没有在管道的另一端进行侦听。

我不确定这里的问题是什么,这可能是由于用户实例化。清除 SqlConnection 的池或处置连接实例无济于事。

我正在使用的连接字符串如下:

“数据源=.\SQLEXPRESS;初始目录=dbname;集成安全=SSPI;”

更新:

我曾尝试将 EntityConnection 用于数据库维护目的,但遇到了麻烦。我不能使用 EntityConnection 来创建数据库和删除数据库。EntityConnection 不支持以下语法,但对 ms SQL express 的 SqlConnection 可以正常工作。

CREATE DATABASE silverfit ON ( NAME = silverfit, FILENAME = 'c:\silverfit\silverfit.mdf' );

同样由于某种原因,EntityConnection 不允许我更改删除数据库所必需的数据库。恐怕我仍然需要 SqlConnection 来创建数据库和表..

SqlConnections 和 EntityConnections 有没有办法为本地 ms SQL express 数据库共存?

谢谢, 沃特

4

5 回答 5

2

您是否尝试过创建一个 SqlConnection,然后将其传递给 EntityConnection 的构造函数?EntityConnection 的重载之一采用 MetadataWorkspace 和 DbConnection(从中派生 SqlConnection)。这样做的轻微缺点是您必须手动创建 MetadataWorkspace,它收集定义您的 .csdl、.ssdl 和 .msl 文件工作区。但是,从长远来看,您应该能够为执行 DML 查询和使用实体框架共享一个连接。

于 2009-06-06T01:26:16.117 回答
1

我不同意您需要一个普通的 SQL 连接和实体连接来完成此任务,至少正如您所描述的那样。您可以使用实体连接执行 SQL。查看EntityConnection.CreateDbCommand。自然地,这里有一个危险,即您在一个非数据库服务器特定的实例(如 EntityConnection)上执行特定于数据库服务器的事情。但在这种情况下,它可能胜过拥有单独的连接。

于 2009-02-05T17:55:00.330 回答
1

您是否尝试使用 EntityConnection.StoreConnection 来检索 SqlConnection 并使用它执行命令?

于 2009-06-06T01:10:20.440 回答
0

如果您尝试在运行时将数据库文件附加到 SQL Server Express,看起来好像是这样,那么一次只能打开一个连接。这是其他事情的问题,而不仅仅是您要完成的事情。例如,假设您通过 VS 中的服务器资源管理器连接到“c:\silverfit\silverfit.mdf”并尝试打开数据库中的一个表。打开表后,尝试运行您的应用程序。它会爆炸。

但是,如果您打开 SQL Management Studio Express(您可以在此处下载),然后将数据库附加到 SQL Server,您遇到的问题应该会消失。此时,您应该能够通过 SQLConnection 或 EntityConnection 打开与数据库的多个连接。

在运行时将数据库附加到 SQL Server express 引擎实际上只适用于演示目的或概念证明。

于 2009-06-08T12:28:07.897 回答
0

ADO.NET 是否通过连接池保持打开到数据库的连接?尝试将 Pooling=False 添加到连接字符串,因为这可能允许在删除数据库之前将其关闭。

于 2009-06-08T19:00:53.217 回答