如何将ADO.net Entity Framework与现有的SqlConnection一起使用?

ado.net entity-framework sqlconnection

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

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

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

一般承认的答案

该论坛帖子有答案:

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映射文件的位置 - 在本例中是当前程序集中的嵌入资源。


热门答案

安德鲁彼得斯

谢谢您的回答。

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

它正好在我的指尖,但我似乎无法使MetadataWorkspace参数工作。

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

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

谢谢你的帮助。




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因