Поделиться через


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

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

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

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

Существовали и другие технологии веб-служб, которые обеспечивали интеграцию с Entity Framework, например WCF Data Services и RIA Services.

Низкоуровневые интерфейсы API EF

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

Сущности с самостоятельным отслеживанием

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

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

Важно!

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