我使用实体framwerok创建了一个DAL。我还创建了一个业务服务层和一个表示层(Web应用程序)。 我常见的是告诉我连接字符串应仅在DAL中,但表示层也需要连接字符串。
那么这种情况的最佳做法是什么?有没有办法只在DAL中使用连接字符串?
答案 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();