本文转载:http://www.cnblogs.com/dudu/archive/2011/01/29/entity_framework_connection_string.html

如果EF在使用实体模型时候,即model first 和db first 时候,则

Entity Framework使用的连接字符串与ADO.NET是不同的,见下图:

相比于ADO.NET,Entity Framework的连接字符串不仅要存放metadata配置信息,还要存放完整的数据库连接字符串(上图中的"provider connection string"部分)。

这样的设计有两个不足之处:

1. 连接字符串配置复杂;

2. 无法重用现有的ADO.NET数据库连接字符串。

我在技术推广中这么写的:
public class DALBase
{
public NWEntities NWContext { get; set; } public DALBase()
{
string providerString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
string conn = GetEntityConnString(providerString);
NWContext = new NWEntities(conn);
} private string GetEntityConnString(string providerString)
{
EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
//Metadata属性的值,是从向导生成的Config粘贴过来的
entityBuilder.Metadata = "res://*/NW.csdl|res://*/NW.ssdl|res://*/NW.msl";
entityBuilder.ProviderConnectionString = providerString;
entityBuilder.Provider = "System.Data.SqlClient"; return entityBuilder.ToString();
}
}

注意上面中的 entityBuilder.Metadata = "res://*/NW.csdl|res://*/NW.ssdl|res://*/NW.msl";

metadata:指明.csdl/.ssdl/.msl三个文件的路径,要与你的edmx文件名称一致。

web.config文件如下:

Entity FreamWork配置文件方式
<add name="LGSCMSEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;Server=zengfanlong;database=LGSCMS;uid=sa;pwd=123456;&quot;" providerName="System.Data.EntityClient" /> ADO.NET方式配置文件
<add name="LGSCMSEntities" connectionString="Server=zengfanlong;database=LGSCMS;uid=sa;pwd=123456;"/>

在Entity Framework中重用现有的数据库连接字符串的更多相关文章

  1. 关于Entity Framework中的Attached报错的完美解决方案终极版

    之前发表过一篇文章题为<关于Entity Framework中的Attached报错的完美解决方案>,那篇文章确实能解决单个实体在进行更新.删除时Attached的报错,注意我这里说的单个 ...

  2. Entity Framework中DbContext结合TransactionScope提交事务的正确方式

    问: I would like know what is the best possible way to implement transactions with DBContext. In part ...

  3. Entity Framework 教程——Entity Framework中的实体类型

    Entity Framework中的实体类型 : 在之前的章节中我们介绍过从已有的数据库中创建EDM,它包含数据库中每个表所对应的实体.在EF 5.0/6.0中,存在POCO 实体和动态代理实体两种. ...

  4. 关于Entity Framework中的Attached报错相关解决方案的总结

    关于Entity Framework中的Attached报错的问题,我这里分为以下几种类型,每种类型我都给出相应的解决方案,希望能给大家带来一些的帮助,当然作为读者的您如果觉得有不同的意见或更好的方法 ...

  5. [转]在Entity Framework中使用LINQ语句分页

    本文转自:http://diaosbook.com/Post/2012/9/21/linq-paging-in-entity-framework 我们知道,内存分页效率很低.并且,如果是WebForm ...

  6. 在Entity Framework中使用事务

    继续为想使用Entity Framework的朋友在前面探路,分享的东西虽然技术含量不高,但都是经过实践检验的. 在Entity Framework中使用事务很简单,将操作放在TransactionS ...

  7. Entity Framework中的多个库操作批量提交、事务处理

    在Entity Framework 中使用SaveChanges()是很频繁的,单次修改或删除数据后调用SaveChanges()返回影响记录数. 要使用批量修改或者批量删除数据,就需要SaveCha ...

  8. LinqToSql和ASP.NET Entity FrameWork 中使用事务

    ASP.NET Entity FrameWork中: int flag = -1; if (this.URPmanagementEntities1.Connection.State != System ...

  9. Lazy<T>在Entity Framework中的性能优化实践

    Lazy<T>在Entity Framework中的性能优化实践(附源码) 2013-10-27 18:12 by JustRun, 328 阅读, 4 评论, 收藏, 编辑 在使用EF的 ...

随机推荐

  1. pyqt实践——从裸机到打包安装

    1 安装python 安装python-2.7.6.msi默认在c盘 设置环境变量,path后追加c:/python27.可以在命令行直接认识命令python 2 安装pyqt PyQt4-4.10- ...

  2. poj 1459 Power Network(增广路)

    题目:http://poj.org/problem?id=1459 题意:有一些发电站,消耗用户和中间线路,求最大流.. 加一个源点,再加一个汇点.. 其实,过程还是不大理解.. #include & ...

  3. short s1 = 1; s1 = s1 + 1;有错而short s1 = 1; s1 += 1正确

    这个问题以前碰到过,也研究过,发表一下:    如果你认为表达式(x += i)只是表达式(x = x + i)的简写方式,这并不准确.这两个表达式都被称为赋值表达式.第二个表达式使用的是简单赋值操作 ...

  4. 基于Struts2的用户登录程序

    基本步骤: 1.新建Java工程,File>New>Project>Web>Dynamic Web Project,并将工程命名为:Struts2_Demo 2.导入strut ...

  5. OK335xS Qt network hacking

    /********************************************************************** * OK335xS Qt network hacking ...

  6. light工具

    环境变量 C:\Users\zhangqm\AppData\Roaming\npm\; 安装 npm install -gd jresplus 不要用npm install -gd light pro ...

  7. 各种兼容的placeholder

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  8. 【转】【iOS】导航栏那些事儿

    原文网址:http://www.jianshu.com/p/f797793d683f 参考文章 navigationItem UINavigationItem UINavigationBar UIBa ...

  9. Erlang入门(二)—并发编程

    Erlang中的process——进程是轻量级的,并且进程间无共享.查了很多资料,似乎没人说清楚轻量级进程算是什么概念,继续查找中...闲话不提,进入并发编程的世界.本文算是学习笔记,也可以说是< ...

  10. C#实现无物理边距真正可打印区域的绘图\打印程序开发

    经常在开发实际的应用程序中,需要用到图形绘制和打印程序.如何实现完整的精确打印和绘图是需要注意许多细节地方的.最近在遇到打印问题的时候,仔细研究一阵,总结这篇博文,写得有点杂乱,看文要还请费点神. 基 ...