将连接字符串放在n层应用程序中的位置?

时间:2009-09-09 19:48:13

标签: .net entity-framework architecture

我使用实体framwerok创建了一个DAL。我还创建了一个业务服务层和一个表示层(Web应用程序)。 我常见的是告诉我连接字符串应仅在DAL中,但表示层也需要连接字符串。

那么这种情况的最佳做法是什么?有没有办法只在DAL中使用连接字符串?

5 个答案:

答案 0 :(得分:4)

您通常将连接字符串放在配置文件中,并且使用的配置文件是执行程序集的配置文件。对于一个网站,它将是web.config。

为什么您的表示层需要访问连接字符串?

答案 1 :(得分:2)

您的连接字符串通常位于web.config中并可从其中访问。您可能不应该对连接字符串进行硬编码,除非您没有其他选择(我无法想到您不会的任何情况)。

答案 2 :(得分:2)

如果表示层需要连接字符串,则您的设计存在缺陷。

答案 3 :(得分:2)

数据抽象层应该是您访问数据的唯一位置。您的表示层应使用业务服务层,业务服务层应使用DAL进行数据访问。因此,您不需要从表示层直接访问数据源,连接字符串的唯一位置将在DAL中。

答案 4 :(得分:0)

我有一个DAL,它在实例化时将连接字符串作为参数。使用DAL的图层负责获取它。这样,如果DAL位于Windows或Web应用程序中,则DAL不会更改。我的DAL也只使用单例模式对每个应用程序实例化一次,因此检索连接字符串的开销只支付一次。

        public sealed class cApp
        {

        static readonly cDB _cDB = new cDB(
    ConfigurationManager.ConnectionStrings["MyConnString"].ConnectionString);

        public static cDB DB
            {
                get
                {
                    return _cDB;
                }
            }

        }

然后在代码中我可以使用它:

    GridView1.DataSource = cApp.DB.GetStages(id);
   GridView1.DataBind();