Poco Entity Framework 4. Куда я должен добавить свои методы для работы с классами Poco?

#entity-framework #entity-framework-4 #model #poco #partial-classes

#entity-framework #entity-framework-4 #Модель #poco #частичные классы

Вопрос:

Я пытался использовать Entity Framework 4 и POCO для моего проекта MVC 3. Возможно, я не понимаю основной идеи этого ORM, но проблема заключается в следующем:

  1. Я добавил ADO .СЕТЕВАЯ модель данных сущности и создание модели в соответствии с базой данных.
  2. Я нажал Добавить элемент генерации кода и добавил генератор сущностей ADO .NET POCO.
  3. Он создает классы для каждой таблицы базы данных.
  4. Я хочу добавить некоторые методы для работы с данными (Add, Update, Delete, GetAll и т.д.) В соответствующие модели. Для LINQTOSQL я добавил частичные классы и поместил их в модели. Но сейчас я не могу этого сделать, потому что:

a) в папке Models есть классы с одинаковыми именами, которые были созданы POCO.

б) Если я помещу свой частичный класс в другую папку, это будет другое пространство имен — таким образом, такие классы не будут частичными.

c) Если я размещу свой код в классах POCO, он может быть уничтожен во время обновления POCO.

Как я могу это использовать? Где я должен разместить свои методы для работы с данными? Лучший ли способ создать для POCO и EF другой проект — http://blogs.msdn.com/b/adonet/archive/2010/01/25/walkthrough-poco-template-for-the-entity-framework.aspx ?

Комментарии:

1. почему у частичного класса в другой папке должно быть другое пространство имен? Вы можете управлять пространством имен.

Ответ №1:

Во-первых, вам не обязательно писать свой CRUD внутри POCO, есть много мест, где вы можете это сделать, например, в файле edmx.cs или написать еще один слой, который называется CRUD Services, который обрабатывает операции с базой данных с использованием context object.

Теперь перейдем к вашим вопросам,

  1. Создайте отдельную папку Models и поместите туда классы моделей. Вашему классу модели может понравиться это,

     EmployeeDepartmentModel
    {
     prop EmpList List(Emp);
     prop DeptList List(Dept);
     //Emp and Dept are my POCOs
    }
      
  2. Итак, теперь я должен заполнить оба этих списка (ваш грубый вопрос),
    Для этого я создам один метод в классе Controller (лучше написать такую логику в какой-нибудь другой библиотеке, но пока я предлагаю вам создать в Controller),

     FillTheModel()
    {
      EmployeeDepartmentModel.EmpList = EDMX.GetAllEmployees;
      EmployeeDepartmentModel.DeptList = EDMX.GetAllDepartments;
    }
      
  3. Теперь вы можете привязать эту модель к своему представлению.

Ответ №2:

Вы можете поместить частичные классы в другую папку и изменить пространство имен.

Ответ №3:

Я согласен с allisewell, но если вы действительно хотите добавить части в частичные классы, дайте файлам другое имя, например MyPoco.Part2.cs или измените шаблон t4, чтобы называть сгенерированные файлы, например Poco.Сгенерированный.cs