Ste*_*wen 5 c# asp.net entity-framework-4 ef-code-first asp.net-mvc-3
我正在创建一个多租户Asp.Net MVC 3 Web应用程序,并首先使用EF4.1代码进行数据库模型.
对于开发,我很高兴在App_Data中使用SqlServerCE,为了生产,这将转移到Sql Server 2008.
说我的情况下被称为"MyModels",默认情况下,代码首先查找名为Web.config中"MyModels"的连接字符串.这可以被告知使用App_Data中的文件或更改为访问SQL2008中的数据库.到目前为止都很好.
但由于多租户,我希望SqlServerCE文件名匹配租户的唯一ID(因此App_Data将具有"client_x.sdf","client_y.sdf"; Sql Server 2008将具有单独的数据库).我无法弄清楚如何指向这些不同的数据库.
我已经尝试从DbContext继承并提供连接字符串的MyModel(在Web.config中使用'占位符'conn字符串并用唯一的id替换"{clientId}"),我也尝试在其中设置连接字符串MyModels构造函数:
base.Database.Connection.ConnectionString = xxx;
Run Code Online (Sandbox Code Playgroud)
但这似乎永远不会奏效.我总是得到以下错误:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)
(这表明它尚未"配置"使用SqlServerCE,因此尝试连接到Sql Server.我想!)
跟踪代码,此时尚未从Web.config中读取Database.Connection.ConnectionString,因此我无法搜索和替换它,并且可能会在管道中稍后被'占位符'conn字符串覆盖.
我认为这一定非常简单,我找不到'钩子'.有人可以帮忙吗?
我已经明白了,那是因为我有点笨。对不起!我只是想将 ConnectionString 设置为 Web.config 中的 ConnectionString,但实际上我需要使用 DbConnectionStringBuilder 来构建它。如果我替换构建器的 ConnectionString 属性,然后使用构建器设置 EF conn 字符串,它就可以工作。
归档时间: |
|
查看次数: |
1617 次 |
最近记录: |