首页
学习
活动
专区
圈层
工具
发布

CRUD设计
EN

Stack Overflow用户
提问于 2011-11-03 03:49:24
回答 1查看 583关注 0票数 0

我有一个设计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服务。我应该如何确保我的设计能够适应这些变化?
EN

回答 1

Stack Overflow用户

发布于 2011-11-03 04:24:27

您错过了模型(想想MVC)。这应该能解决你们两个的问题。我不认为你需要一个DAL层。

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

对于第一个问题,您的代码可能如下所示。

代码语言:javascript
复制
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”或其他任何内容,只需修改DAO即可。使用管理器的任何东西都只需要使用模型中的类,并使用C#中已经存在的容器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7990065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档