19
  1. 我有一个使用 SqlConnection 的现有 asp.net 网站。
  2. 我添加了 ADO.net 实体框架。
  3. 我已成功连接到数据库并创建了 .edmx 文件。
  4. 我能够通过实体框架使用自动生成的连接字符串进行连接。

我想使用我在整个站点中用于实体框架连接的现有 SqlConnection 对象。
我不想为要使用 ADO.net Entity Framework 的一个页面使用第二个数据库连接,也不想更改整个站点以使用新的 Entity Framework 连接字符串。

感谢您的任何帮助,您可以提供。

4

3 回答 3

23

该论坛帖子有答案:

MetadataWorkspace workspace = new MetadataWorkspace(
  new string[] { "res://*/" }, 
  new Assembly[] { Assembly.GetExecutingAssembly() });

using (SqlConnection sqlConnection = new SqlConnection(connectionString))
using (EntityConnection entityConnection = new EntityConnection(workspace, sqlConnection))
using (NorthwindEntities context = new NorthwindEntities(entityConnection))
{
  foreach (var product in context.Products)
  {
    Console.WriteLine(product.ProductName);
  }
}

“res://*/”是 EF 连接字符串的一部分,它描述了 xml 映射文件的位置——在这种情况下是当前程序集中的嵌入资源。

于 2009-02-06T07:00:40.103 回答
1

您可以使用生成的接受 EntityConnection 的 ObjectContext的构造函数来执行此操作。当您创建EntityConnection时,您将传入您的 SqlConnection。

于 2009-02-06T04:06:30.983 回答
1

安德鲁·彼得斯

谢谢您的回答。

我一直在使用 System.Data.EntityClient.EntityConnection。

它就在我的指尖,但我似乎无法让 MetadataWorkspace 参数工作。

这是我找到的最接近的例子(标有答案的帖子):

http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/dd7b1c41-e428-4e29-ab83-448d3f529ba4/

谢谢你的帮助。

于 2009-02-06T05:54:17.210 回答