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

时间:2009-02-05 23:50:05

标签: entity-framework ado.net sqlconnection

  1. 我有一个使用SqlConnection的现有asp.net网站。
  2. 我添加了ADO.net实体框架。
  3. 我已成功连接到数据库并创建了.edmx文件。
  4. 我能够通过Entity Framework连接自动生成的连接字符串。
  5. 我想使用整个站点中用于Entity Framework连接的现有SqlConnection对象 我不想为将要使用ADO.net实体框架的一个页面使用第二个数据库连接,并且我不想更改整个站点以使用新的Entity Framework连接字符串。

    感谢您提供的任何帮助。

3 个答案:

答案 0 :(得分: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映射文件位置的部分 - 在本例中是当前程序集中的嵌入资源。

答案 1 :(得分:1)

您可以使用生成的接受EntityConnection的ObjectContext的constructor来执行此操作。当您创建传递SqlConnection的EntityConnection时。

答案 2 :(得分:1)

Andrew Peters,

感谢您的回答。

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

它就在我的指尖,但我似乎无法使MetadataWorkspace参数起作用。

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

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

感谢您的帮助。