我使用带有实体框架的分层架构作为我的数据层,顶部有一堆存储库,其中包含 Linq-To-Entities 查询。数据层是一个项目,接下来我有一个服务层和界面,它是一个网站。
我希望我的网站负责为我的实体模型指定连接字符串。我该怎么做呢?
我正在使用单例方法访问位于数据层内的实体存储库。
谢谢
我使用带有实体框架的分层架构作为我的数据层,顶部有一堆存储库,其中包含 Linq-To-Entities 查询。数据层是一个项目,接下来我有一个服务层和界面,它是一个网站。
我希望我的网站负责为我的实体模型指定连接字符串。我该怎么做呢?
我正在使用单例方法访问位于数据层内的实体存储库。
谢谢
您可以将在 DAL 程序集的 App.Config 中创建的连接字符串复制到 web.config 的 connectionStrings 部分。
您可以将连接字符串保留在程序集 dll 中,但不应将其与网站一起部署。
您将需要复制整个连接字符串。它应该如下所示:
<add name="DataEntities" connectionString="metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=xxx;Initial Catalog=xxx;User Id=xxx;Password=xxx;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
它应该包括有关映射文件所在位置的所有信息。
就我而言,虽然我使用的是 L2S 而不是 L2E,但建议应该成立。我有一个从 XML 文件提供的通用配置库。当需要数据上下文时,每个数据对象都有如下方法。当然,如果您愿意,它可以很容易地被模板化。
private static string _conStr = null;
private static CalendarsAndListsDataContext GetDataContext()
{
if (_conStr == null)
{
_conStr = ConfigurationLibrary.Config.Settings().GetConnectionString("liveConString");
}
return new CalendarsAndListsDataContext(_conStr);
}
现在,最大的缺点是连接字符串更改需要重新启动应用程序,但就我而言,这不是问题。