C#中静态嵌套类的替代方法,用于对类的公共方法进行分组

本文关键字:方法 用于 静态 嵌套 | 更新日期: 2023-09-27 18:26:27

我正在尝试创建一个可通过互联网访问的业务对象数据库层。

我想调用数据库访问器方法,如下所示:

_databaseHander.Employee.SelectBetweenDates(date1, date2);
_databaseHandler.PayDetails.SelectAll();
_databaseHandler.BusinessArea.InsertAll(businessAreaData);

通过HTTP调用,这将被转换为以下内容:

www.website.com/DatabaseObject/Employee/SelectBetweenDates/Date1=yyyyMMdd&Date2=yyyyMMdd
www.website.com/DatabaseObject/BusinessArea/InsertAll (will be sent as a post)

我不确定该怎么做。我预计它会是这样的:

public class DatabaseHandler
{
    private DatabaseContext _context;
    public DatabaseHandler(DatabaseContext context)
    {
        _context = context;
    }
    public static class Employee
    {
        public static IEnumerable<EmployeeData> SelectBetweenDates(DateTime date1, DateTime date2)
        {
            return _context.Select(x=>x.FromDate <=date1 && x.ToDate>=date2);
        }
    }
}

这似乎是对"静态"的滥用。。。我甚至不确定是否可以用这种方式进行编码。有人知道我该怎么做吗?

我尝试拆分方法调用的原因是,自动完成非常有用,例如键入_databaseHandler。不会为每个数据库对象返回4或5个方法。

为了更好的可读性,我还想将类拆分为分部类,以避免出现10000行的类。

C#中静态嵌套类的替代方法,用于对类的公共方法进行分组

创建一个单独的类,该类可以是非嵌套的,然后在DatabaseHandler中有一个返回实例的属性

然而,我不认为这实际上应该被称为Employee,因为它显然不代表个人员工。它更像是一个EmployeeCollection。老实说,您可能只返回一个IQueryable<EmployeeData>(我假设这是基于LINQ的),然后在一个单独的静态类中添加扩展方法,以添加集合特定的查询。

Employee theEmployee = new Employee();

将为您提供一个可使用的Employee对象。

有了这个,您可以从DataBaseHandler 更改Employee类的值