繁体   English   中英

实体框架 - 分层设计 - 在哪里放置连接字符串?

[英]Entity Framework - layered design - Where to put connectionstring?

我正在使用一个分层架构,将实体框架作为我的数据层,顶部有一堆存储库,其中包含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=&quot;Data Source=xxx;Initial Catalog=xxx;User Id=xxx;Password=xxx;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

它应该包括映射文件存在位置的所有信息。

在我的情况下,虽然我使用L2S而不是L2E,但建议应该成立。 我有一个通用的Config库,它从XML文件中提供。 当需要数据上下文时,每个数据对象都有如下方法。 当然,如果您愿意,它可以很容易模板化。

private static string _conStr = null;
private static CalendarsAndListsDataContext GetDataContext()
{
    if (_conStr == null)
    {
        _conStr = ConfigurationLibrary.Config.Settings().GetConnectionString("liveConString");
    }

    return new CalendarsAndListsDataContext(_conStr);
}

现在,最大的缺点是连接字符串更改需要重新启动应用程序,但在我的情况下,这不是问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM