在Entity Framework中重用现有的数据库连接字符串

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

2011012912553045.jpg

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

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

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

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

我觉得更合理的设计应该是将数据库连接字符串独立出来,并提供一个"provider connection string name"设置,在这个设置中可以指定“数据库连接字符串”的名称,效果见下图:

2011012914302443.jpg

这样既简单,又能重用,多好!

YY之后,还是要回到现实,Entity Framework就是这个鸟样,现有的数据库连接字符串我就是想重用,那怎么办呢?

自己创建EntityConnection,并将之传递给ObjectContext的构造函数,代码如下:

 
  
public CNBlogsObjectContext()
:
base (BuildConnection( " CNBlogsDB " ), " club_CNBlogsContainer " )
{
}

static EntityConnection BuildConnection( string connectionStringName)
{
string connectionString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
MetadataWorkspace workspace
= new MetadataWorkspace( new string [] { " res://*/ " },
new Assembly[] { Assembly.GetExecutingAssembly() });

SqlConnection sqlConnection
= new SqlConnection(connectionString);
return new EntityConnection(workspace, sqlConnection);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值