0

我正在尝试创建一个可通过 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 行类。

4

2 回答 2

1

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

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

于 2013-08-05T05:46:27.120 回答
0
Employee theEmployee = new Employee();

会给你一个可以使用的Employee对象。

有了这个,你可以改变Employee类的值DataBaseHandler

于 2013-08-04T20:51:03.057 回答