Дизайн для CRUD - PullRequest
       3

Дизайн для CRUD

0 голосов
/ 03 ноября 2011

У меня есть требование для разработки приложения CRUD.В БД есть три таблицы - Сотрудники, Продажи и Клиент.Значения для этих таблиц доступны в трех разных таблицах.Мое приложение должно периодически проверять электронную таблицу и обновлять соответствующую таблицу.Я придумал следующий дизайн

EmpMgr - EmpDAL - EmpDAO

SalesMgr - SalesDAL - SalesDAO

CustMgr - CustDAL - CustDAO

Таймер вмое основное приложение будет периодически отправляться и получать электронную таблицу, доступную в настроенном месте, и вызывать функцию анализа в EmpMgr, SalesMgr или CustMgr.Соответствующие классы анализируют файл и формируют «Вектор EmpDao / SalesDao / CustDao» и вызывают соответствующий DAL для обновления таблицы.

Мои опасения по поводу этого подхода

  1. Анализфайла Excell может повторяться во всех классах Mgr.Если я хочу создать универсальный синтаксический анализатор, как я должен заставить его возвращать конкретный «Вектор DAO»?
  2. Сегодня данные от Excell могут быть изменены на XML или даже веб-сервис.Как я должен убедиться, что мой дизайн будет соответствовать изменениям?

1 Ответ

1 голос
/ 03 ноября 2011

Вам не хватает модели (например, 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 или что-то еще, все, что вам нужно сделать, это изменить DAO. Все, что использует менеджер, должно использовать только классы в вашей модели и использовать контейнеры уже в C #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...