Работа с отключенными сущностями

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

Платформы веб-служб

Технологии веб-служб обычно поддерживают шаблоны, которые можно использовать для сохранения изменений в отдельных отключенных объектах. Например, ASP.NET веб-API позволяет выполнять действия контроллера кода, которые могут включать вызовы EF для сохранения изменений, внесенных в объект в базе данных. На самом деле, инструменты Web API в Visual Studio позволяют легко генерировать контроллер Web API из вашей модели Entity Framework 6. Дополнительные сведения см. в статье об использовании веб-API с Entity Framework 6.

Исторически было несколько других технологий веб-служб, которые предложили интеграцию с Entity Framework, таких как службы данных WCF и службы RIA.

Низкоуровневые API EF

Если вы не хотите использовать существующее решение n-уровня или хотите настроить то, что происходит внутри действия контроллера в службах веб-API, Entity Framework предоставляет API, которые позволяют применять изменения, внесенные на отключенный уровень. Дополнительные сведения см. в разделе "Добавление, присоединение" и "Состояние сущности".

самоотслеживающие сущности

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

Этот шаблон можно использовать с моделями, созданными с помощью конструктора EF, но не может использоваться с моделями code First. Дополнительные сведения см. в разделе самоотслеживаемые сущности.

Это важно

Мы больше не рекомендуем использовать шаблон самоотслеживающихся сущностей. Она будет доступна только для поддержки существующих приложений. Если приложению требуется работать с отключенными графами сущностей, рассмотрите другие варианты, такие как отслеживаемые сущности, которая похожа на технологию self-Tracking-Entities, которая более активно разрабатывается сообществом, или написание пользовательского кода с помощью API отслеживания изменений низкого уровня.