我有一个业务逻辑层类,其中包含数据库中每个表的访问方法。由于现在有很多表,我想重组它以按实体对方法进行分组(以便在编码时更容易访问)。所以,从这个:
BLL.Database MyDB = new BLL.Database();
BLL.Entity.User MyUser = Database.UserGetById(42);
到此:
BLL.Database MyDB = new BLL.Database();
BLL.Entity.User MyUser = Database.User.GetById(42);
我希望该类在可能的情况下保持非静态,所有类的“部分”也是(允许我向主生成的类添加其他方法)。我有什么选择来实现这一目标?这是当前的布局:
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..
}
}
这可行吗?
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..
}
}
感谢。
答案 0 :(得分:2)
除了使用partial
之外,您的布局看起来还不错。我认为partial
不会为你提供可行的技巧,因为partial
类必须全部驻留在同一个程序集中。
更好的解决方案可能是创建extension methods。
答案 1 :(得分:1)
是的,这是可行的。事实上,我实现了很多类似的东西。
当然,在这样做之后我听说了Linq to SQL,我们开始使用它了......所以你可能想把它作为另一个选项来检查。