Entity Framework: Как использовать сущности в качестве бизнес-объектов в памяти - PullRequest
1 голос
/ 13 июля 2010

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

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

Вот некоторые из возможностей, о которых я думал до сих пор:

  • Используйте отдельные объекты в памяти (состояние сеанса) и присоединяйте их, когда хотите их сохранить.
  • Просто сохраните их, а затем удалите, когда они окажутся нежелательными данными.
  • Используйте для этого отдельные не-EF классы и конвертируйте их в EF, когда хотите сохранить.

Есть ли другие возможности? Спасибо за ваши идеи.

Ответы [ 2 ]

3 голосов
/ 13 июля 2010

Я бы предложил подход 1 или 3, в зависимости от остальной вашей архитектуры.

Если вы используете EF с POCO, это действительно не проблема - однако, если вы используете сгенерированные классы сущностей, у вас может возникнуть другая проблема: вы отображаете их в POCO перед отправкой на уровень пользовательского интерфейса?
Если нет, вы должны изменить это. Взгляните, например, AutoMapper , который сделает процесс отображения гладким и простым.

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

0 голосов
/ 13 июля 2010

Первый вариант, вероятно, лучший.Вы можете просто создавать объекты EF Entities, используя их конструктор по умолчанию, изменять их свойства и делать все, что вы хотите.Они будут сохранены в базе данных, только если вы добавите их в модель сущности и вызовете SaveChanges.

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