Ответ 1
Фон
ADO.NET Framework поддерживает две модели архитектуры доступа к данным:
- Ориентированный на подключение
- Отключено
В архитектуре доступа к ориентированным на доступ к данным приложение подключается к источнику данных, а затем взаимодействует с ним через SQL-запросы с использованием одного и того же соединения (например, открытое соединение должно поддерживаться между вашим приложением и Источник данных, даже если он не использует какие-либо операции с базой данных).
Подключенная архитектура - это когда вы постоянно совершаете поездки в базу данных для любой операции CRUD (Create, Read, Update and Delete), которую вы хотите сделать. Это создает больше трафика для базы данных, но обычно намного быстрее, так как вы должны делать небольшие транзакции.
Он построен на классах Connection
, Command
, DataReader
и Transaction
.
В отключенной архитектуре доступа к данным ADO.net использует хранилище данных в памяти, которое может хранить несколько таблиц одновременно (они извлекаются раньше).
Отключенная архитектура - это метод извлечения набора записей из базы данных и его хранения, что дает вам возможность выполнять многие операции CRUD (Create, Read, Update and Delete) для данных в памяти, тогда их можно повторно синхронизировать с базой данных при повторном подключении.
Он построен на классах Connection
, DataAdapter
, CommandBuilder
, DataSet
и DataView
.
Некоторые ключевые классы подключенной и отключенной архитектуры
-
DataReader
- это связанная архитектура, поскольку она поддерживает соединение открыто до тех пор, пока все строки не будут выбраны один за другим. -
DataSet
- отключенная архитектура, поскольку все записи и сразу нет необходимости поддерживать связь. -
DataAdapter
действует как мост между соединенными и Отключенные объекты. Он управляет соединениями между источником данных иDataSet
, заполнив данные из источника данных наDataSet
.
, который лучше в желаемой ситуации?
Подключенный режим
- соединение ориентировано
- мы читаем данные из базы данных с помощью объекта
DataReader
- Его методы обеспечивают более высокую производительность
- Он может хранить данные отдельной таблицы
- Только для чтения, мы не можем обновлять данные
Отключенный режим
- Отключено ориентированное соединение.
- мы читаем данные из базы данных с помощью объекта
DataSet
. - Низкая скорость и производительность.
- Он может содержать несколько таблиц данных.
- мы можем выполнить все параметры как обновления, вставки, удаления и т.д.
Ответ на ваши вопросы
Теперь я прочитал несколько статей о подключенной модели и отключенной модели в EF, и я смущен, почему я должен явно привязывать сущности к контекст в отключенной модели? Я также прочитал, что по умолчанию поведение в сети отключено модели, а в WPF подключена модель!
Веб-приложение может быть подключено или отключено, а на самом деле приложения ASP.NET отключены, из-за отсоединенной модели ADO.NET. Отключенная модель становится все более популярной благодаря простой реализации и упрощению поиска и устранения неисправностей. Хороший дизайн с приложением ASP.NET закроет все соединения с базой данных, как только обработка данных будет завершена, независимо от того, будет ли она 15 ударов в месяц или 15 ударов в секунду.
Может ли кто-нибудь объяснить в простой манере с аналогией реальной жизни какая разница между двумя моделями?
Да, предположим, что у вас есть несколько важных советов, чтобы рассказать/узнать друга. Отключено означает, что вы ждали его, или вы тратите время, чтобы получить больше советов. Подключенный - это способ, когда вы живете с ним или имеете он-лайн/RealTime сообщение для него, чтобы каждый раз сообщать каждый совет.
Как мы могли бы обрабатывать обе модели в EF с помощью простого примера?
EF использует модель Disconnected. поскольку вы работаете с данными и делаете необходимые изменения, а затем выполняете SaveChanges
:)
Есть ли связь между типом приложения (веб-форма, MVC, WPF, WCF) и выделенной модели, используемой в EF?
Он основан на логике приложения. Приложения RealTime необходимо подключать, поскольку они нуждаются в распространении и обновлении во времени, а не в других типах приложений.
Когда использовать подключенную модель и когда использовать отключенную модель (используя EF)?
Я ответил на это. Просто хочу сказать, что, поддерживая соединения открытыми только на минимальный период времени, ADO.NET сохраняет системные ресурсы и обеспечивает максимальную безопасность для баз данных, а также оказывает меньшее влияние на производительность системы. Он основан на вашей стратегии/типе приложения, вы можете принять правильное решение самостоятельно.
Обновление
но если бы я был в отключенной модели, не могли бы вы рассказать мне, как EF может обрабатывать несколько операций (INSERT, UPDATE, DELETE) от многих пользователей в то же время?
Взгляните на ObjectStateManager
, который отвечает за все, связанное с отслеживанием объектов в контексте. Если некоторые пользователи выполняют параллельные обновления для одной и той же записи, по умолчанию Entity Framework реализует оптимистичную модель concurrency. Это означает, что блокировки не хранятся на данных в источнике данных между тем, когда данные запрашиваются и данные обновляются. Entity Framework сохраняет изменения объектов в базе данных без проверки на concurrency. Для объектов, которые могут испытывать высокую степень concurrency (например, банковскую систему), мы рекомендуем, чтобы объект определял свойство в концептуальный слой с атрибутом ConcurrencyMode="fixed"
, как показано в следующем примере:
<Property Name="Status" Type="Byte" Nullable="false" ConcurrencyMode="Fixed" />
Когда этот атрибут используется, Entity Framework проверяет изменения в базе данных перед сохранением изменений в базе данных. Любые конфликтующие изменения вызовут OptimisticConcurrencyException
, который также может возникнуть, когда вы определяете модель данных сущности, которая использует хранимые процедуры для обновления данных источник. В этом случае исключение возникает, когда хранимая процедура, используемая для выполнения отчетов об обновлениях, обновляет нулевые строки. Для получения дополнительной информации посетите Сохранение изменений и управление Concurrency