Лучшие практики Entity Framework в ASP.Net - PullRequest
2 голосов
/ 28 ноября 2011

Я только начал работать над структурой сущностей в приложении ASP.net, и мне было интересно, может ли кто-то указать правильное направление в отношении лучших практик. У меня есть несколько вопросов, которые я перечислил ниже.

  1. Прежде всего, я использую Entity Framework 4.0. Я уже создал свою базу данных, и поэтому я создал библиотеку классов и сгенерировал модель сущностей из базы данных. Я использовал Guids, сгенерированный базой данных, поэтому мне пришлось изменить ssl для включения атрибута StoreGeneratedPattern="Identity". Есть ли способ сделать это автоматически или мне нужно вручную редактировать ssl каждый раз, когда я обновляю базу данных и модель? (Для тех, кто знает, что сталкиваются с проблемой с гидами или хотите знать, почему я это делаю .. это ясная статья о проблеме с автоматически сгенерированными GUID)

  2. Я планировал использовать один файл в библиотеке классов для хранения всех запросов к базе данных. Это хорошая практика? Как бы убедиться, что разные программисты не переписывают одни и те же запросы снова и снова?

  3. Я планировал использовать уникальный контекст для каждого метода. Это правильный путь? Я прочитал пост Рика Страля по управлению жизненным циклом контекста. Но я до сих пор не уверен, что правильный метод - это уникальный контекст для каждого метода.

  4. Могу ли я иметь свои запросы к базе данных как статические методы, поскольку они не используют какие-либо переменные экземпляра?

  5. Если я использую уникальный контекст для каждого метода, как упомянуто в 3, и я хочу изменить объектный объект, возвращаемый одним контекстом, что было бы лучше? Использую ли я функцию присоединения, чтобы прикрепить объект к новому контексту и сохранить изменения? Я не пробовал это, но я прочитал несколько статей, и это кажется немного простым, но я хотел знать, есть ли альтернативы этому.

Если у вас есть предложения о том, как вы используете Entity Framework в приложении ASP.net, я определенно мог бы использовать справку. Это мое первое приложение ASP.net/Entity Framework, поэтому любые советы помогут

1 Ответ

1 голос
/ 28 ноября 2011
  1. Эта проблема возникла в начальной версии VS 2010. В некоторых случаях она должна работать правильно после установки VS 2010 SP1. Если это не установить это KB .
  2. Вы можете легко получить огромный класс с большим количеством статических методов. Попробуйте использовать некоторое разделение по типу сущности, к которой вы обращаетесь. Вы никогда не будете полностью уверены, что другой программист не создаст тот же запрос снова. Это касается правильного именования запросов в соответствии с той же политикой именования, документацией и общением между программистами.
  3. Уникальный контекст "per method" обычно не нужен. В большинстве случаев вы должны быть довольны уникальным контекстом для логической (бизнес) транзакции - в случае логической операции веб-приложения в большинстве случаев обработка отдельного запроса = один контекст на запрос.
  4. Если вы передаете экземпляр контекста вашим запросам, ответ - да. Как только вы не создадите их как статические, и они возьмут экземпляр контекста из экземпляра своего класса, вы будете очень близки к шаблону репозитория.
  5. Это в точности проблема контекста для каждого метода, и ее трудно решить, потому что для этого нужно сначала отсоединить сущность от первого контекста и прикрепить ее ко второму контексту. Если ваша сущность также имеет связанные сущности, загруженные, все эти отношения будут обнулены во время отсоединения (если только вы не используете глубокий клон вместо отсоединения = создание второго экземпляра сущности).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...