Ich benutze Linq-to-SQL/XML und ich betrachte meine Anwendung als 3-Tier. Der Unterschied zwischen einer Pre-Linq-Anwendung ist, dass jetzt die Datenzugriffsebene viel kleiner und leichter ist, was eigentlich eine sehr gute Sache ist!
In meinem alten DAL würde ich wie gehabt Methoden:
public virtual int CountCustomersInCountry(string country) {
// Plug in raw SQL.
}
public virtual List<Customer> GetCustomersInCountry(string country) {
// Plug in raw SQL.
}
public virtual int CountCustomersForDepartment(string department) {
// Plug in raw SQL.
}
public virtual List<Customer> GetCustomersForDepartment(string department) {
// Plug in raw SQL.
}
etc. etc. ad-infinitum
Ich habe jetzt die folgende Art von Methoden:
public virtual int Count(Expression<Func<T, bool>> where) {
// Plug in Linq-to-SQL DataContext here.
}
public virtual T Get(Expression<Func<T, bool>> where) {
// Plug in Linq-to-SQL DataContext here.
}
public virtual List<T> Get(Expression<Func<T, bool>> where, string orderByField, int offset, int count) {
// Plug in Linq-to-SQL DataContext here.
}
die neuen DAL Methoden aufrufen und mit ein wenig Hilfe von DynamicLinq ich benutze:
int countryCount = Count(c => c.Country == country);
List<Customer> customers = Get(c => c.Country == country, "inserted", 0, 25);
int departmentCount = Count(c => c.Department == department);
List<Customer> customers = Get(c => c.Department == department, "inserted", 0, 25);
und alles, das, bevor Sie fahren Sie auf Hinzufügen, Aktualisieren und Löschen wh Ich werde Single Lines mit Linq2SQL! Meine DAL besteht nun aus 10 Methoden, bei denen es wie bisher einfach war, für jedes Objekt, für das sich meine DAL kümmerte, 20 bis 30 Methoden zu bekommen! Ich würde sehr empfehlen, versuchen Sie es zu verstehen, da es wirklich viel Code sparen wird.
Das ist episch ... Ich arbeite an einer Provider-Modell-basierten Implementierung einer Claims-Processing-App ... wenn ich nur darüber Bescheid wüsste, wenn die CoreClaimsProvider-Klasse geschrieben wurde ... diese 200+ Methoden wären soooo wenig ... GENIUS !!! – War