Ich habe eine Business-Logik-Layer-Klasse, die Zugriffsmethoden für jede Tabelle in einer Datenbank enthält. Da es jetzt einige Tabellen gibt, möchte ich es neu strukturieren, um die Methoden nach Entitäten zu gruppieren (für leichteren Zugriff beim Codieren). Also, von hier:Eine Klasse in Unterklassen aufteilen
BLL.Database MyDB = new BLL.Database();
BLL.Entity.User MyUser = Database.UserGetById(42);
dazu:
BLL.Database MyDB = new BLL.Database();
BLL.Entity.User MyUser = Database.User.GetById(42);
ich die Klasse möchte nicht statisch, wenn möglich zu bleiben, mit allen Klassen ‚teilweise‘ zu (um mich zu erlauben hinzufügen zusätzliche Methoden zur generierten Hauptklasse). Was sind meine Möglichkeiten, dies zu erreichen? Hier ist das aktuelle Layout:
namespace BLL
{
public partial class Database
{
// private members..
// constructor
#region User
public IQueryable<BLL.Entity.User> UserGetAll()
{
// ...
}
public BLL.Entity.User UserGetById(int UserId)
{
// ...
}
public void UserSave(ref BLL.Entity.User user)
{
// ...
}
public void UserDelete(int userId)
{
// ...
}
#endregion
// More sets of methods for other entities in database here..
}
}
Ist das machbar?
namespace BLL
{
public partial class Database
{
private _User;
public User
{
if (_User == null)
{
_User = new User();
}
return _User;
}
// Other data access classes here..
}
public partial class User
{
public IQueryable<BLL.Entity.User> GetAll()
{
// ...
}
// GetById, Save & Delete methods here..
}
}
Danke.
Diese BLL ist ein Wrapper für Linq-to-SQL :) Es entkoppelt alle Linq Datenkontext Entitäten in statusfreie Poco-Klassen. – Nick