Борьба с Entity Framework 4 - PullRequest
       0

Борьба с Entity Framework 4

0 голосов
/ 26 июня 2010

Пожалуйста, мне нужна помощь о том, как обрабатывать CRUD способом ef4. Я запустил проект на asp.net mvc1 и ef v1 .net 3.5 sp1, но после выпуска vs 2010 я преобразовал приложение в asp.net mvc2 и ef4 .net4 после некоторого прочтения новых функций, предлагаемых обеими технологиями. .

Прямо сейчас я в некотором роде, потому что все не так просто, как я думал, и срок выполнения проекта быстро приближается. Я буду признателен за некоторую помощь, в основном о том, как создавать, обновлять и удалять, не совершая поездки в базу данных, где это не нужно.

Я нашел способ обработки команд CRUD без отключения базы данных, но проблема этого подхода заключается в том, что он перезаписывает все неизмененные и сгенерированные базой данных значения (getutcdate () и т. Д.) В базе данных, и он не работает для граф объектов (объектные отношения). Пожалуйста, быстрый совет о том, как сделать все правильно? Код для моей команды обновления следующий:

dc.PersonEntitySet.Attach(entity);ObjectStateEntry entry = dc.ObjectStateManager.GetObjectStateEntry(entity);entry.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);

В настоящее время я использую POCO на клиенте и вручную преобразую его в DAL в сущность структуры сущностей перед выполнением операции ef.

Спасибо.

Ответы [ 2 ]

1 голос
/ 27 июня 2010

Попробуйте использовать шаблоны EF4 Poco.Но для лучшего отслеживания изменений я бы использовал объекты самопроверки.

0 голосов
/ 23 января 2012
  • создать сборку DataModel с использованием модели данных ADO.Net (использует нормализованную базу данных);

  • Удалите все свойства навигации (если ваша база данных полностью нормализована с большим количеством взаимосвязей внешних ключей, вам лучше это сделать)

  • Измените настройку генерации кода по умолчанию на Нет и измените свойство артефакта метаданных на «Копировать в выходной каталог» (Это создаст файлы схемы в папке bin, которые вы можете скопировать в DAL или WCF. И это помогает в изоляции кода)

  • Использование генератора POCO ADO.Net для генерации классов POCO

  • Сохраните файл edmx и соберите сборку. (Сохранение страницы дизайнера и закрытие обновленного кода)

  • Скопируйте файлы кода в отдельную сборку Объекты передачи данных Это будут ваши типы для ссылки на ваши лица; Вы можете использовать их в BLL, DAL и WCF

  • В сборке DTO удалены ключевые слова "virtua". Это предотвратит переопределение EF сгенерированного кода.

  • Создать DAL (уровень доступа к данным) как отдельную сборку. (Очень важно добавить ссылку на System.Data.Entity, иначе контекст будет недоступен) Хорошо держать DAL изолированно.

  • Скопируйте файлы контекста в DAL; Добавьте ссылку на сборку DTO; Скопируйте 3 файла схемы из папки DM bin в папку bin данной сборки.

    Вы получите выгоду от изоляции кода; когда вам нужно добавить больше сущностей или сохраненных процедур, просто скопируйте файлы кода и замените 3 файла схемы

  • Создайте еще одну сборку с именем BLL (уровень бизнес-логики) и добавьте ссылку на сборки DTO и DAL; Скопируйте 3 файла схемы из папки bin модели данных в эту папку bin; Сборка сборки BLL;

    Всегда полезно хранить бизнес-логику изолированно.

  • Создание службы WCF, которая ссылается на BLL и DTO Поскольку типы в DTO являются примитивными типами, WCF заботится обо всей сериализации.

  • Если вы используете выигрышную форму клиента, добавьте сервисную ссылку; Это приносит сущности, которые вы можете использовать во время компиляции.

Надеюсь, это поможет.

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