首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将“提供者连接字符串”与EF (EDMX)元数据信息分开?

如何将“提供者连接字符串”与EF (EDMX)元数据信息分开?
EN

Stack Overflow用户
提问于 2015-02-18 22:19:06
回答 2查看 617关注 0票数 1

我希望能够在配置(app.config,web.config)中分别处理实际的连接字符串和EF元数据连接字符串--目的是使实际的数据源更加明显。

我完全控制了EF上下文的创建(yay IoC!),但不想硬编码任何值。最好是这样的:

代码语言:javascript
复制
<add name="EfEntities"
     connectionString="metadata=res://*/..;provider connection string=NO;.." />
<add name="EfEntities_Provider"
     connectionString="data source=SERVER;initial catalog=DB;user id=ME" />

它也是可以接受的,而且可能更好的是,部署的信任只有企业集团的EF连接字符串-只要它是由源信任的单独属性构建的。(但这一级别的配置转换使我无法理解。)

我很好地使用针对Designer / Updater的集团化EF“连接字符串”-- EDMX与部署的目标程序集中的使用情况不同。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-18 22:22:02

在我的项目中,我用代码构建EF连接字符串,并将它传递给上下文对象的构造函数,如下所示:

代码语言:javascript
复制
void InitContext() {

    String actualConnectionString = ConfigurationManager.ConnectionStrings["server123"].ConnectionString;

    String efConnectionString = String.Format(CultureInfo.InvariantCulture, "metadata=res://*/..;provider connection string={0};.", actualConnectionString);

    _context = new MyEFContext( efConnectionString );
}
票数 2
EN

Stack Overflow用户

发布于 2015-02-18 23:29:59

我决定“去”戴的回答背后的想法。它可能有问题。密码最好不包含引号);但是它在这里适用于测试,并且在配置转换中感觉更“可见”。

代码看起来就像:

代码语言:javascript
复制
var edmxMetadata = GetConnectionStringSetting("EfEntities_Metadata");
var providerConnection = GetConnectionStringSetting("EfEntities_Provider");

var edmxCS = string.Format(@"{0};provider={1};provider connection string=""{2}""",
    edmxMetadata.ConnectionString,
    providerConnection.ProviderName,
    providerConnection.ConnectionString);

// (and by and by)
var context = new EfEntities(edmxCS);

其中:

代码语言:javascript
复制
<!-- just the metadata -->
<add name="EfEntities_Metadata"
     connectionString="metadata=res://*/EfEntities.csdl|res://*/EfEntities.ssdl|res://*/EfEntities.msl"
     providerName="System.Data.EntityClient" />
<!-- just the provider connection string -->
<add name="EfEntities_Provider"
     connectionString="data source=SERVER;initial catalog=DB;user id=ME"
     providerName="System.Data.SqlClient" />
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28595050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档