Одновременное выполнение в ADO.NETSide-by-Side Execution in ADO.NET

Side-by-side выполнения в .NET Framework является возможность выполнения приложения на компьютере, на котором установлено несколько версий платформы .NET Framework установлена, используя только ту версию, для которой приложение скомпилировано.Side-by-side execution in the .NET Framework is the ability to execute an application on a computer that has multiple versions of the .NET Framework installed, exclusively using the version for which the application was compiled. Подробные сведения о настройке side-by-side выполнения, см. в разделе выполнения Side-by-Side.For detailed information about configuring side-by-side execution, see Side-by-Side Execution.

Приложение, скомпилированное с помощью одной версии платформы .NET Framework можно запустить на другой версии платформы .NET Framework.An application compiled by using one version of the .NET Framework can run on a different version of the .NET Framework. Тем не менее мы рекомендуем компиляции версии приложения для каждой установленной версии платформы .NET Framework и выполнять их по отдельности.However, we recommend that you compile a version of the application for each installed version of the .NET Framework, and run them separately. В любом случае вы должны помнить об изменениях в ADO.NET между выпусками, которые могут повлиять на прямую и обратную совместимость приложения.In either scenario, you should be aware of changes in ADO.NET between releases that can affect the forward compatibility or backward compatibility of your application.

Прямая и обратная совместимостьForward Compatibility and Backward Compatibility

Прямая совместимость означает, что приложение может быть скомпилировано в более ранней версии платформы .NET Framework, но все равно будет успешно работать в более поздней версии платформы .NET Framework.Forward compatibility means that an application can be compiled with an earlier version of the .NET Framework, but will still run successfully on a later version of the .NET Framework. Код ADO.NET, написанный для платформы .NET Framework версии 1.1, обладает прямой совместимостью с более поздними версиями.ADO.NET code written for the .NET Framework version 1.1 is forward compatible with later versions.

Обратная совместимость означает, что приложение компилируется для более новой версии платформы .NET Framework, но продолжает работать в более ранних версиях .NET Framework без потери функциональности.Backward compatibility means that an application is compiled for a newer version of the .NET Framework, but continues to run on earlier versions of the .NET Framework without any loss of functionality. Само собой это не будет возможности, появившиеся в новой версии платформы .NET Framework.Of course, this will not be the case for features introduced in a new version of the .NET Framework.

Поставщик данных .NET Framework для ODBCThe .NET Framework Data Provider for ODBC

Начиная с версии 1.1, поставщик данных .NET Framework для ODBC (System.Data.Odbc) включается как часть платформы .NET Framework.Starting with version 1.1, the .NET Framework Data Provider for ODBC (System.Data.Odbc) is included as a part of the .NET Framework. Поставщик данных ODBC доступен для разработчиков .NET Framework версии 1.0 загрузки из Интернета из Центр разработчиков хранилищ и доступа к данным.The ODBC data provider is available to .NET Framework version 1.0 developers as a Web download from the Data Access and Storage Developer Center. Пространство имен для загруженного поставщика данных .NET Framework для ODBC Microsoft.Data.Odbc.The namespace for the downloaded .NET Framework Data Provider for ODBC is Microsoft.Data.Odbc.

Если у вас есть приложение, разработанное для .NET Framework версии 1.0, который использует поставщик данных ODBC для подключения к источнику данных, и вы хотите выполнить приложение .NET Framework версии 1.1 или более поздней версии, необходимо обновить пространство имен для доступа к данным ODBC Поставщик, который должен System.Data.Odbc.If you have an application developed for the .NET Framework version 1.0 that uses the ODBC data provider to connect to your data source, and you want to run that application on the .NET Framework version 1.1 or a later version, you must update the namespace for the ODBC data provider to System.Data.Odbc. Затем приложение необходимо перекомпилировать его более новой версии платформы .NET Framework.You then must recompile it for the newer version of the .NET Framework.

Если у вас есть приложение, разработанное для .NET Framework версии 2.0 или более поздней версии, использующий поставщик данных ODBC для подключения к источнику данных, и вы хотите запустить это приложение на платформе .NET Framework версии 1.0, то необходимо загрузить поставщик данных ODBC и установить его в системе .NET Framework версии 1.0.If you have an application developed for the .NET Framework version 2.0 or later that uses the ODBC data provider to connect to your data source, and you want to run that application on the .NET Framework version 1.0, you must download the ODBC data provider and install it on the .NET Framework version 1.0 system. Затем необходимо внести изменения пространства имен поставщика данных ODBC на Microsoft.Data.Odbcи перекомпилировать приложение для платформы .NET Framework версии 1.0.You then must change the namespace for the ODBC data provider to Microsoft.Data.Odbc, and recompile the application for the .NET Framework version 1.0.

Поставщик данных .NET Framework для OracleThe .NET Framework Data Provider for Oracle

Начиная с версии 1.1, поставщик данных .NET Framework для Oracle (System.Data.OracleClient) включается как часть платформы .NET Framework.Starting with version 1.1, the .NET Framework Data Provider for Oracle (System.Data.OracleClient) is included as a part of the .NET Framework. Поставщик данных доступна для разработчиков .NET Framework версии 1.0 загрузки из Интернета из Центр разработчиков хранилищ и доступа к данным.The data provider is available to .NET Framework version 1.0 developers as a Web download from the Data Access and Storage Developer Center.

Если у вас есть приложение, разработанное для .NET Framework версии 2.0 или более поздней версии, использующий поставщик данных для подключения к источнику данных, и вы хотите запустить это приложение на платформе .NET Framework версии 1.0, необходимо загрузить поставщик данных и установить его на .NE T скомпилировано.If you have an application developed for the .NET Framework version 2.0 or later that uses the data provider to connect to your data source, and you want to run that application on the .NET Framework version 1.0, you must download the data provider and install it on the .NET Framework version 1.0 system.

Управление доступом для кодаCode Access Security

Поставщики данных .NET Framework в .NET Framework версии 1.0 (System.Data.SqlClient, System.Data.OleDb) необходимы для запуска с правами доступа FullTrust.The .NET Framework data providers in the .NET Framework version 1.0 (System.Data.SqlClient, System.Data.OleDb) are required to run with FullTrust permission. Любая попытка использовать поставщики данных .NET Framework k из .NET Framework версии 1.0 в зоне с меньшими усилиями FullTrust вызовет исключение SecurityException.Any attempt to use the .NET Framework k data providers from the .NET Framework version 1.0 in a zone with less than FullTrust permission causes a SecurityException.

Тем не менее начиная с .NET Framework версии 2.0, все поставщики данных .NET Framework можно использовать в частично доверенных зонах.However, starting with the .NET Framework version 2.0, all of the .NET Framework data providers can be used in partially trusted zones. Кроме того это новая функция безопасности был добавлен для поставщиков данных .NET Framework в .NET Framework версии 1.1.In addition, a new security feature was added to the .NET Framework data providers in the .NET Framework version 1.1. Эта возможность позволяет указывать, какие строки соединения могут использоваться в конкретной зоне безопасности.This feature enables you to restrict what connection strings can be used in a particular security zone. Также можно отключить использование пустых паролей для конкретной зоны безопасности.You can also disable the use of blank passwords for a particular security zone. Для получения дополнительной информации см. Code Access Security and ADO.NET.For more information, see Code Access Security and ADO.NET.

Так как каждая установка платформы .NET Framework имеет отдельный файл Security.config, отсутствии проблем совместимости с параметрами безопасности.Because each installation of the .NET Framework has a separate Security.config file, there are no compatibility issues with security settings. Тем не менее если ваше приложение зависит от возможностей безопасности ADO.NET, включенных в .NET Framework версии 1.1 и более поздние версии, вы не сможете распространить их на систему версии 1.0.However, if your application depends on the additional security capabilities of ADO.NET included in the .NET Framework version 1.1 and later, you will not be able to distribute it to a version 1.0 system.

Выполнение SqlCommandSqlCommand Execution

Начиная с .NET Framework версии 1.1, так что ExecuteReader выполняет команды изменения в данных источника.Starting with the .NET Framework version 1.1, the way that ExecuteReader executes commands at the data source was changed.

В .NET Framework версии 1.0 ExecuteReader выполнял все команды в контексте sp_executesql хранимой процедуры.In the .NET Framework version 1.0, ExecuteReader executed all commands in the context of the sp_executesql stored procedure. В результате этого команды, которые влияли на состояние соединения (например, SET NOCOUNT ON), применялись только к выполнению текущей команды.As a result, commands that affect the state of the connection (for example, SET NOCOUNT ON), only apply to the execution of the current command. Состояние соединения не изменялось для любых последующих команд, выполнявшихся при открытом соединении.The state of the connection is not modified for any subsequent commands executed while the connection is open.

В .NET Framework версии 1.1 и более поздних версий ExecuteReader только выполняет команды в контексте sp_executesql хранимую процедуру, если команда содержит параметры, что обеспечит выигрыш в производительности.In the .NET Framework version 1.1 and later, ExecuteReader only executes a command in the context of the sp_executesql stored procedure if the command contains parameters, which provides a performance benefit. В результате этого, если команда, влияющая на состояние соединения, включена в непараметризованную команду, она изменяет состояние соединения для всех последующих команд, выполняемых при открытом соединении.As a result, if a command affecting the state of the connection is included in a non-parameterized command, it modifies the state of the connection for all subsequent commands executed while the connection is open.

Рассмотрим следующий пакет команд, выполняемых при обращении к ExecuteReader.Consider the following batch of commands executed in a call to ExecuteReader.

SET NOCOUNT ON;  
SELECT * FROM dbo.Customers;  

В .NET Framework версии 1.1 и более поздних версий NOCOUNT останется в для любых последующих команд, выполняемых при открытом соединения.In the .NET Framework version 1.1 and later, NOCOUNT will remain ON for any subsequent commands executed while the connection is open. В .NET Framework версии 1.0 NOCOUNT находится только ВО время выполнения текущей команды.In the .NET Framework version 1.0, NOCOUNT is only ON for the current command execution.

Это изменение может повлиять на прямую и обратную совместимость приложения, если полагаются на поведение ExecuteReader для любой версии платформы .NET Framework.This change can affect both the forward and backward compatibility of your application if you depend on the behavior of ExecuteReader for either version of the .NET Framework.

Для приложений, работающих в и более ранних версиях платформы .NET Framework можно написать код, чтобы убедиться, что происходит так же, независимо от версии, на котором выполняются с.For applications that run on both earlier and later versions of the .NET Framework, you can write your code to make sure that the behavior is the same regardless of the version you are running on. Если требуется сделать так, чтобы команда изменяла состояние соединения для всех последующих команд, рекомендуется выполнять команду с помощью ExecuteNonQuery.If you want to make sure that a command modifies the state of the connection for all subsequent commands, we recommend that you execute your command using ExecuteNonQuery. Если требуется сделать так, чтобы команда не изменяла соединение для всех последующих команд, рекомендуется включать в нее команды для сброса состояния соединения.If you want to make sure that a command does not modify the connection for all subsequent commands, we recommend that you include the commands to reset the state of the connection in your command. Пример:For example:

SET NOCOUNT ON;  
SELECT * FROM dbo.Customers;  
SET NOCOUNT OFF;  

См. такжеSee also