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

时间:2013-08-04 20:13:52

标签: c# sql database select

我正在尝试创建一个可访问Internet的业务对象数据库层。

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

_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个方法。

我还希望将类拆分为部分类,以提高可读性,避免10,000行。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

Employee theEmployee = new Employee();

会为您提供Employee对象。

有了这个,你可以从Employee

更改DataBaseHandler类的值