Es gibt eine lange laufende Gewohnheit hier, wo ich arbeite, dass die Verbindungszeichenfolge in der web.config lebt, ein Sql-Verbindungsobjekt in einem using-Block mit dieser Verbindungszeichenfolge instanziiert und an den DataObjects-Konstruktor übergeben wird (über eine CreateInstance-Methode, da der Konstruktor privat ist). Etwa so:
using(SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
DataObject foo = DataObject.CreateInstance(conn);
foo.someProperty = "some value";
foo.Insert();
}
Das alles riecht für mich Ich weiß es nicht. Sollte nicht die DataLayer-Klassenbibliothek für Connection-Objekte und Connection-Strings zuständig sein? Ich wäre dankbar zu wissen, was andere tun oder gute Online-Artikel über diese Art von Design-Entscheidungen.
Bedenken Sie, dass die Projekte, an denen wir arbeiten, immer Sql Server-Backends sind, und es ist äußerst unwahrscheinlich, dass sich das ändert. Das Factory- und Provider-Muster ist also nicht das, wonach ich suche. Es geht eher darum, wo die Verantwortung liegt und wo die Konfigurationseinstellungen für den Betrieb der Datenschicht verwaltet werden sollten.