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

EZ.*_*EZ. 18 ado.net entity-framework sqlconnection

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

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

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

And*_*ers 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);
  }
}
Run Code Online (Sandbox Code Playgroud)

"res://*/"是EF连接字符串的一部分,用于描述xml映射文件的位置 - 在本例中是当前程序集中的嵌入资源.

  • 我有同样的问题,但你将Assembly.GetExecutingAssembly()更改为Assembly.GetAssembly(typeof(NorthwindEntities)),它使它工作得很好. (3认同)
  • 谢谢,现在我收到此错误:MetadataWorkspace必须预先注册EdmItemCollection.该项目是一个带有.edmx文件的Asp.net网页.我认为它没有从.edmx文件中获取数据. (2认同)