#entity-framework #entity-framework-4 #model #poco #partial-classes
#entity-framework #entity-framework-4 #Модель #poco #частичные классы
Вопрос:
Я пытался использовать Entity Framework 4 и POCO для моего проекта MVC 3. Возможно, я не понимаю основной идеи этого ORM, но проблема заключается в следующем:
- Я добавил ADO .СЕТЕВАЯ модель данных сущности и создание модели в соответствии с базой данных.
- Я нажал Добавить элемент генерации кода и добавил генератор сущностей ADO .NET POCO.
- Он создает классы для каждой таблицы базы данных.
- Я хочу добавить некоторые методы для работы с данными (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.
Теперь перейдем к вашим вопросам,
-
Создайте отдельную папку Models и поместите туда классы моделей. Вашему классу модели может понравиться это,
EmployeeDepartmentModel { prop EmpList List(Emp); prop DeptList List(Dept); //Emp and Dept are my POCOs }
-
Итак, теперь я должен заполнить оба этих списка (ваш грубый вопрос),
Для этого я создам один метод в классе Controller (лучше написать такую логику в какой-нибудь другой библиотеке, но пока я предлагаю вам создать в Controller),FillTheModel() { EmployeeDepartmentModel.EmpList = EDMX.GetAllEmployees; EmployeeDepartmentModel.DeptList = EDMX.GetAllDepartments; }
-
Теперь вы можете привязать эту модель к своему представлению.
Ответ №2:
Вы можете поместить частичные классы в другую папку и изменить пространство имен.
Ответ №3:
Я согласен с allisewell, но если вы действительно хотите добавить части в частичные классы, дайте файлам другое имя, например MyPoco.Part2.cs или измените шаблон t4, чтобы называть сгенерированные файлы, например Poco.Сгенерированный.cs