我正在尝试创建一个可访问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行。
答案 0 :(得分:1)
创建一个单独的类,可以是非嵌套的 - 然后在DatabaseHandler
中有一个属性,它返回一个实例。
我并不认为这应该实际上被称为Employee
,因为它显然不代表个人员工。它更像是EmployeeCollection
。说实话,你可能只返回一个IQueryable<EmployeeData>
(我假设这是基于LINQ的),然后在一个单独的静态类中添加扩展方法来添加集合 - 具体查询。
答案 1 :(得分:0)
Employee theEmployee = new Employee();
会为您提供Employee
对象。
有了这个,你可以从Employee
DataBaseHandler
类的值