繁体   English   中英

CRUD设计

[英]Design for CRUD

我有一个设计CRUD应用程序的要求。 数据库中有三个表-员工,销售和客户。 这些表的值在三个不同的电子表格中可用。 我的应用程序应定期检查电子表格并更新相应的表格。 我想出了以下设计

EmpMgr-EmpDAL-EmpDAO

SalesMgr-SalesDAL-SalesDAO

CustMgr-CustDAL-CustDAO

我的主应用程序中的计时器将定期运行,并在配置的位置获取电子表格,并在EmpMgr,SalesMgr或CustMgr中调用Parse函数。 各个类解析文件并形成“ EmpDao / SalesDao / CustDao的向量”,并调用相应的DAL来更新表。

我对这种方法的担心是

  1. excell文件的解析可以在所有Mgr类中重复进行。 如果我想创建一个通用解析器,应该如何返回具体的“ DAO向量”?
  2. 今天,数据来自excell,可能会更改为XML甚至是Web服务。 我应该如何确保我的设计能够适应这些变化?

您缺少模型(请考虑MVC)。 这应该可以解决您的两个问题。 我认为您不需要DAL层。

例如,用于保存员工列表的Excel工作表。 您应该为员工开设具体课程。 可以在列表容器中保存员工列表。 您的DAO将解析excel,并将每一行变成一个雇员对象,或者接受一个雇员对象,并将其添加为excel中的一行。

对于第一个问题,您的代码可能看起来像这样。

class EmployeeManager()
{
   ...

   public void CreateEmployee(Employee employee)
   {
       dao.Add(employee);
   }

   public void CreateEmployees(List<Employee> employees)
   { 
       dao.AddMany(employees);
   }

   ...

   public List<Employee> GetAllEmployees()
   {
       List<Employee> employees = dao.GetAll();
       employees.Sort();
   }

   ...
}

class Employee()
{
   Employee(string name, string job)
   {
      Name = name;
      Job = job;
   }

   ...

   string Name { get; set; }
   string Job { get; set; }
}

class EmployeeDAO()
{

   ...

   public List<Employee> GetAllEmployees() 
   {

        List<Employee> employees = new List<Employee>;

        //parse all rows and make make employee objects out of them.

        return employees;           
   }

}

对于Q1,通过使用模型,您将使用C#提供的容器来保存员工列表,可以对他们进行搜索,排序,修改等,并且代码已经为您完成,为您尝试和测试并编写比你聪明的人

对于Q2,如果将Excel从XML更改为XML或其他任何内容,则只需修改DAO。 任何使用管理器的人都只需要使用模型中的类,并利用C#中已有的Containers。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM