No Image

Строка подключения entity framework

СОДЕРЖАНИЕ
0 просмотров
10 марта 2020

При работе с Entity Framework во всех предыдущих примерах мы полагались на соглашения Code-First по автоматическому определению подключения к базе данных. По умолчанию, Code-First создает базу данных на локальном сервере .SQLEXPRESS, используя полное имя класса контекста для имени базы данных (например, пространство имен + имя класса). Для примера нашего проекта это означает, что Code-First создаст базу данных с именем CodeFirst.SampleContext. Зачастую это поведение необходимо переопределить, в частности мы передавали имя базы данных MyShop в конструкторе класса контекста. В этой статье содержится подробное описание настроек имени базы данных и подключения к ней.

Использование конфигурационного файла приложения

Самым простым способом управления подключением к базе данных является использование конфигурационного файла приложения. В файле конфигурации можно переопределить базовые соглашения Code-First и точно указать строку подключения к базе данных. Этот подход особенно полезен, если вы хотите изменить строку подключения в вашем контексте, чтобы указать подключение к удаленной (не локальной) базе данных при развертывании приложения.

В приложениях ASP.NET конфигурационным файлом является файл Web.config, в приложениях другого типа – App.config. При использовании нескольких проектов в одном решении можно допустить ошибку с правильным выбором конфигурационного файла. Например, в нашем приложении сущностная модель находится в проекте библиотеки классов CodeFirst, а непосредственно с данными мы работаем в проекте веб-приложения ASP.NET. Возможно вам покажется правильным, разместить настройки подключения в файле App.config проекта CodeFirst. Однако это является неправильным решением. Entity Framework настраивает базу данных при создании объекта контекста, а не при его объявлении. В примерах, приводившихся ранее, мы использовали объект контекста в коде веб-форм, поэтому настройки строки подключения нужно указывать в файле Web.config веб-приложения ASP.NET.

Благодаря такому подходу обеспечивается возможность многоразового использования модели данных. В каждом проекте, где мы ссылаемся на проект CodeFirst, мы можем указать свою строку подключения, т.е. одна модель будет работать с разными базами данных.

Для указания строки подключения используется раздел конфигурации connectionString. По умолчанию, строка подключения должна иметь то же имя, что и файл контекста, при этом можно указать как полное имя так и краткое (т.е SampleContext или CodeFirst.SampleContext). Благодаря этому, Entity Framework автоматически найдет нужную строку подключения в файле конфигурации и использует ее. В примере ниже показано определение строки подключения:

Запустите этот пример и убедитесь, что Code-First создаст новую базу данных с именем MyShop2 для текущей модели. Если вы прорабатывали примеры из предыдущих статей, то пока удалите вызов конструктора базового класса из класса контекста. В результате будет создана следующая база данных:

Настройка подключения в конструкторе класса контекста

Выше вы видели, как задать строку подключения из файла конфигурации так, что контекст будет использовать ее автоматически благодаря соглашениям Code-First. Теперь давайте посмотрим на некоторые способы управления подключением к базе данных из кода.

Класс DbContext помимо конструктора по умолчанию включает в себя несколько перегруженных версий конструкторов. Если вы используете один из этих конструкторов, Code-First не будет использовать соглашения для автоматического поиска строки подключения. Самая простая версия конструктора класса DbContext принимает один строковый параметр. Давайте посмотрим как использовать этот конструктор из производного класса:

В этом конструкторе передается либо имя базы данных, либо полностью определенная строка подключения. Entity Framework достаточно интеллектуален, чтобы различить просто имя и строку подключения, в данном примере мы указываем имя базы данных.

Обратите внимание, что в этом примере мы вызываем перегруженный конструктор класса DbContext из конструктора по умолчанию производного класса SampleContext. При таком подходе к проектированию, когда вы создаете объект контекста в вашем приложении, строка подключения будет автоматически выбираться из конструктора по умолчанию класса SampleContext. Иногда бывает необходимо указать строку подключения при создании объекта контекста. Для этого можно добавить перегруженный конструктор в класс контекста с вызовом перегруженного конструктора DbContext:

Теперь в коде работы с данными, при создании объекта класса контекста вы можете указывать имя базы данных или строку подключения:

В этом примере извлекаются данные всех покупателей из таблицы Customers базы данных MyShop2, т.к. мы указали полную строку подключения к этой базе данных. Если в данном примере вы создадите объект контекста с использованием конструктора по умолчанию:

то Code-First использует соглашения по автоматическому поиску строки подключения, и, если не найдет строку подключения с именем SampleContext или CodeFirst.SampleContext, то попытается подключиться к базе данных с именем CodeFirst.SampleContext.

У вас также может возникнуть вопрос, как явно передать конструктору класса контекста имя строки подключения, если оно не соответствует имени класса контекста. Для этого можно использовать укороченную строку подключения с единственным параметром name:

Теперь Code-First будет искать в конфигурационном файле строку подключения с именем MyConnectionStringName.

Повторное использование подключения к базе данных

Одна из перегруженных версий конструктора DbContext принимает объект подключения DbConnection из пространства имен System.Data.Common. Использование этого объекта может быть полезно, если вы хотите указать в нескольких объектах контекста один и тот же объект подключения и не хотите каждый раз указывать имя базы данных или строки подключения. Т.е. объект DbConnection может храниться в определенном месте приложения и вы можете ссылаться на него всякий раз, когда создаете объект контекста. Ниже показан пример:

В этом примере мы создали класс DbConnectionToMyShop, для подключения к базе данных MyShop. Объект этого класса передается в конструкторе по умолчанию класса контекста. Мы также создали для удобства перегруженный конструктор — в коде приложения вы можете просто передать нужный объект подключения. Классы подключений можно определить в одном файле и затем использовать повсеместно в приложении. Второй параметр в этом конструкторе contextOwnsConnection указывает, нужно ли очищать объект подключения при удалении объекта контекста.

Настройка соглашений подключения в Code-First

Последним способом управления подключением к базе данных, является замена соглашений, которые использует Code-First. Соглашения по конфигурации подключения определяются с помощью интерфейса >SetDefaultConnectionFactory() класса DbConfiguration, переопределив тем самым соглашения по умолчанию Code-First.

Соглашения по умолчанию реализует класс SqlConnectionFactory из пространства имен System.Data.Entity.Infrastructure. Поведение по умолчанию определяет, что поставщиком базы данных будет поставщик SQL Server (сборка System.Data.SqlClient), имя сервера — .SQLEXPRESS, а для доступа к серверу используется Windows-аутентификация (сервер доступен для текущего пользователя системы). Вы можете переопределить данные соглашения, например, для того, чтобы явно указать Entity Framework что вы хотите работать с поставщиком MySQL.

В примере ниже показано, как переопределить эти соглашения, используя класс конфигурации, унаследованный от DbConfiguration:

В этом примере мы изменяем имя сервера, а также указываем, что для доступа к серверу должна использоваться SQL-аутентификация, на основе имени пользователя и пароля. Обратите внимание, чтобы указать классу контекста, чтобы он использовал эту конфигурацию, используется атрибут DbConfigurationType. Чтобы зарегистрировать новый класс конфигурации, в файле Web.config веб-приложения нужно удалить раздел defaultConnectionFactory:

Также вы можете установить конфигурацию для всех классов контекста в приложении и не использовать атрибут DbConfigurationType. Для этого укажите свойство codeConfigurationType раздела конфигурации entityFramework:

Здесь указывается ссылка на класс конфигурации и имя сборки, где этот класс располагается. Для настройки поставщика базы данных вы можете использовать метод SetProviderServices() класса конфигурации или использовать элементы provider разделе entityFramework файла конфигурации:

В примерах выше показано использование стандартного поставщика данных SQL Server, но вы можете указать другие поставщики баз данных, которые требуются в вашем приложении (MySQL, Oracle и т.п.)

В этом разделе рассматриваются как Entity Framework обнаруживает какие подключения к базе данных, и как его можно изменить. This topic covers how Entity Framework discovers which database connection to use, and how you can change it. Обе модели, созданные с помощью Code First и конструкторе EF рассматриваются в этом разделе. Models created with Code First and the EF Designer are both covered in this topic.

Обычно в приложении Entity Framework использует класс, производный от DbContext. Typically an Entity Framework application uses a class derived from DbContext. Этот производный класс будет вызовите один из конструкторов в базовом классе DbContext для элемента управления. This derived class will call one of the constructors on the base DbContext class to control:

  • Как контекст будет подключаться к базе данных, то есть как строка подключения — обнаружении используется How the context will connect to a database — that is, how a connection string is found/used
  • Будет использовать контекст вычисления модели с помощью Code First или загрузить модели, созданной с помощью конструктора EF Whether the context will use calculate a model using Code First or load a model created with the EF Designer
  • Дополнительные параметры Additional advanced options
Читайте также:  Правило про глаголы исключения

Следующие фрагменты Показать некоторые из способов конструкторы DbContext может использоваться. The following fragments show some of the ways the DbContext constructors can be used.

Использовать Code First с подключением по соглашению Use Code First with connection by convention

Если вы не сделали любую другую конфигурацию в приложении, затем вызов конструктора без параметров для DbContext приведет к DbContext для запуска в режиме Code First с помощью подключения к базе данных, созданные по соглашению. If you have not done any other configuration in your application, then calling the parameterless constructor on DbContext will cause DbContext to run in Code First mode with a database connection created by convention. Пример: For example:

В этом примере DbContext использует полное имя пространства имен вашего производного контекста class—Demo.EF.BloggingContext—as имя базы данных и создает строку подключения для этой базы данных с помощью SQL Express или LocalDB. In this example DbContext uses the namespace qualified name of your derived context class—Demo.EF.BloggingContext—as the database name and creates a connection string for this database using either SQL Express or LocalDB. Если установлены оба, SQL Express будут использоваться. If both are installed, SQL Express will be used.

Visual Studio 2010 включает в себя SQL Express по умолчанию и Visual Studio 2012 и более поздних версий LocalDB. Visual Studio 2010 includes SQL Express by default and Visual Studio 2012 and later includes LocalDB. Во время установки пакета EntityFramework NuGet проверяет, какой сервер базы данных доступна. During installation, the EntityFramework NuGet package checks which database server is available. Пакет NuGet затем обновит файл конфигурации, задав сервер базы данных по умолчанию, использующий Code First, при создании подключения по соглашению. The NuGet package will then update the configuration file by setting the default database server that Code First uses when creating a connection by convention. Если выполняется SQL Express, он будет использоваться. If SQL Express is running, it will be used. Если SQL Express не доступен затем LocalDB будет зарегистрировано по умолчанию вместо этого. If SQL Express is not available then LocalDB will be registered as the default instead. Нет изменения вносятся в файл конфигурации, если он уже содержит параметр для фабрики подключения по умолчанию. No changes are made to the configuration file if it already contains a setting for the default connection factory.

Использовать Code First с подключением, соглашение о вызовах и указанное имя базы данных Use Code First with connection by convention and specified database name

Если вы не сделали любую другую конфигурацию в приложении, последующим вызовом конструктор строк на DbContext с именем базы данных, которую вы хотите использовать приведет к DbContext для запуска в режиме Code First с помощью подключения к базе данных, созданные по соглашению к базе данных Это имя. If you have not done any other configuration in your application, then calling the string constructor on DbContext with the database name you want to use will cause DbContext to run in Code First mode with a database connection created by convention to the database of that name. Пример: For example:

В этом примере DbContext использует «BloggingDatabase» в качестве имени базы данных и создает строку подключения для этой базы данных с помощью SQL Express (устанавливается с Visual Studio 2010) или LocalDB (устанавливается с Visual Studio 2012). In this example DbContext uses “BloggingDatabase” as the database name and creates a connection string for this database using either SQL Express (installed with Visual Studio 2010) or LocalDB (installed with Visual Studio 2012). Если установлены оба, SQL Express будут использоваться. If both are installed, SQL Express will be used.

Использование Code First, строкой подключения в файле app.config/web.config Use Code First with connection string in app.config/web.config file

Вы можете поместить строку подключения в файле app.config или web.config. You may choose to put a connection string in your app.config or web.config file. Пример: For example:

Это простой способ сообщить DbContext, чтобы использовать сервер базы данных, отличных от SQL Express или LocalDB, приведенном выше примере указывает базу данных SQL Server Compact Edition. This is an easy way to tell DbContext to use a database server other than SQL Express or LocalDB — the example above specifies a SQL Server Compact Edition database.

Если имя строки подключения совпадает с именем контекста (с или без квалификации пространства имен) затем он будет найден DbContext при использовании конструктора без параметров. If the name of the connection string matches the name of your context (either with or without namespace qualification) then it will be found by DbContext when the parameterless constructor is used. Если имя строки подключения отличается от имени контекста можно сказать DbContext, чтобы использовать это подключение в режиме Code First, передавая имя строки подключения для конструктора DbContext. If the connection string name is different from the name of your context then you can tell DbContext to use this connection in Code First mode by passing the connection string name to the DbContext constructor. Пример: For example:

Кроме того, можно использовать форму «имя = "для строки, переданных конструктору DbContext. Alternatively, you can use the form “name= ” for the string passed to the DbContext constructor. Пример: For example:

Эта форма позволяет явные, что предполагается, что строка подключения должна находиться в файле конфигурации. This form makes it explicit that you expect the connection string to be found in your config file. Исключение возникает, если строку подключения с заданным именем не найден. An exception will be thrown if a connection string with the given name is not found.

Database First или Model First со строкой подключения в файле app.config/web.config Database/Model First with connection string in app.config/web.config file

Модели, созданные в конструкторе EF, отличаются от Code First, в том, что модель уже существует и не создается из кода при запуске приложения. Models created with the EF Designer are different from Code First in that your model already exists and is not generated from code when the application runs. Модель обычно существует как файл EDMX в проекте. The model typically exists as an EDMX file in your project.

Конструктор добавляет строки подключения к EF в файл app.config или web.config. The designer will add an EF connection string to your app.config or web.config file. Эта строка подключения отличается тем, что он содержит сведения о том, как найти сведения в файле EDMX. This connection string is special in that it contains information about how to find the information in your EDMX file. Пример: For example:

Конструктор EF также создаст код, который сообщает DbContext, чтобы использовать это подключение, передав имя строки подключения конструктору DbContext. The EF Designer will also generate code that tells DbContext to use this connection by passing the connection string name to the DbContext constructor. Пример: For example:

DbContext знал о необходимости загрузить существующей модели (а не с помощью Code First для вычисления его из кода), так как строка подключения имеет строки подключения к EF, содержащий подробные сведения о модели для использования. DbContext knows to load the existing model (rather than using Code First to calculate it from code) because the connection string is an EF connection string containing details of the model to use.

Другие параметры конструктора DbContext Other DbContext constructor options

Класс DbContext содержит другие конструкторы и шаблоны использования, которые обеспечивают некоторые более расширенные сценарии. The DbContext class contains other constructors and usage patterns that enable some more advanced scenarios. Ниже приведены некоторые из них. Some of these are:

Читайте также:  Вайбер постоянно в сети

Строка подключения содержит сведения для инициализации, передаваемые в виде параметра от поставщика данных в источник данных. A connection string contains initialization information that is passed as a parameter from a data provider to a data source. Синтаксис зависит от поставщика данных, и при попытке открыть соединение строка соединения анализируется. The syntax depends on the data provider, and the connection string is parsed during the attempt to open a connection. Строки соединения платформы Entity Framework содержат сведения, которые используются для соединения с базовым поставщиком данных ADO.NET, поддерживающим Entity Framework. Connection strings used by the Entity Framework contain information used to connect to the underlying ADO.NET data provider that supports the Entity Framework. Они также содержат сведения о необходимых файлах модели и сопоставления. They also contain information about the required model and mapping files.

Строка соединения используется поставщиком EntityClient для доступа к метаданным модели и сопоставления, а также для соединения с источником данных. The connection string is used by the EntityClient provider when accessing model and mapping metadata and connecting to the data source. Свойство ConnectionString объекта EntityConnection позволяет получить доступ к строке соединения или задать ее значение. The connection string can be accessed or set through the ConnectionString property of EntityConnection. Класс EntityConnectionStringBuilder может использоваться для построения или обработки программным путем параметров строки соединения. The EntityConnectionStringBuilder class can be used to programmatically construct or access parameters in the connection string. Дополнительные сведения см. в разделе инструкции. Создание строки подключения EntityConnection. For more information, see How to: Build an EntityConnection Connection String.

Средства EDM создают строку подключения, которая хранится в файле конфигурации приложения. The Entity Data Model tools generate a connection string that is stored in the application’s configuration file. ObjectContext автоматически извлекает сведения о соединении при создании запросов объекта. ObjectContext retrieves this connection information automatically when creating object queries. Доступ к соединению EntityConnection, используемому экземпляром ObjectContext, можно получить с помощью свойства Connection. The EntityConnection used by an ObjectContext instance can be accessed from the Connection property. Дополнительные сведения см. в разделе Управление соединениями и транзакциями. For more information, see Managing Connections and Transactions.

Синтаксис строки подключения Connection String Syntax

Общие сведения о синтаксисе строк подключения см. в разделе синтаксис строки подключения. Строки подключения в ADO.NET. To learn about the general syntax for connection strings, see Connection string syntax | Connection Strings in ADO.NET.

Параметры строки соединения Connection String Parameters

В следующей таблице перечислены допустимые имена для значений ключевых слов в строке соединения ConnectionString. The following table lists the valid names for keyword values in the ConnectionString.

Ключевое слово Keyword Описание Description
Provider Необходимо, если не задано ключевое слово Name . Required if the Name keyword is not specified. Имя поставщика, которое используется для получения объекта DbProviderFactory, относящегося к базовому поставщику. The provider name, which is used to retrieve the DbProviderFactory object for the underlying provider. Это — постоянное значение. This value is constant.

Если в строке соединения сущности не содержится ключевое слово Name , то необходимо задать непустое значение для ключевого слова Provider . When the Name keyword is not included in an entity connection string, a non-empty value for the Provider keyword is required. Это ключевое слово является взаимоисключающим по отношению к ключевому слову Name . This keyword is mutually exclusive with the Name keyword.

Provider Connection String Необязательный. Optional. Указывает зависящую от поставщика строку соединения, которая передается в базовый источник данных. Specifies the provider-specific connection string that is passed to the underlying data source. Эта строка подключения содержит допустимые пары "ключевое слово-значение" для поставщика данных. This connection string contains valid keyword/value pairs for the data provider. Применение недопустимого ключевого слова Provider Connection String приводит к возникновению ошибки времени выполнения при его проверке в источнике данных. An invalid Provider Connection String will cause a run-time error when it is evaluated by the data source.

Это ключевое слово является взаимоисключающим по отношению к ключевому слову Name . This keyword is mutually exclusive with the Name keyword.

Убедитесь, что значение экранировано в соответствии с общим синтаксисом строк подключения ADO.NET. Make sure to escape the value according to the general syntax of ADO.NET connection strings. Рассмотрим пример следующей строки подключения: Server=serverName; User >. Consider for example the following connection string: Server=serverName; User >. Он должен быть экранирован, так как он содержит точку с запятой. It must be escaped because it contains a semicolon. Так как он не содержит двойные кавычки, они могут использоваться для экранирования: Since it does not contain double quotation marks, they may be used for escaping:

Prov ;

Metadata Необходимо, если не задано ключевое слово Name . Required if the Name keyword is not specified. Список каталогов, файлов и расположений ресурсов с разделителями в виде вертикальной черты ( ), в которых будет выполняться поиск сведений о метаданных и сопоставлениях. A pipe-delimited list of directories, files, and resource locations in which to look for metadata and mapping information. Ниже представлен пример такого кода. The following is an example:

Пустые пространства, расположенные с обеих сторон вертикальной черты (

), не учитываются. Blank spaces on each side of the pipe separator are ignored.

Это ключевое слово является взаимоисключающим по отношению к ключевому слову Name . This keyword is mutually exclusive with the Name keyword.

Name По желанию можно определить имя соединения в файле конфигурации приложения, в котором предоставляются необходимые для строки соединения пары «ключевое слово/значение». The application can optionally specify the connection name in an application configuration file that provides the required keyword/value connection string values. В этом случае нельзя задавать эти пары непосредственно в строке соединения. In this case, you cannot supply them directly in the connection string. Применение ключевого слова Name в файле конфигурации не допускается. The Name keyword is not allowed in a configuration file.

Если в строке соединения не содержится ключевое слово Name , то необходимо задать непустые значения для ключевого слова Provider. When the Name keyword is not included in the connection string, a non-empty values for Provider keyword is required.

Это ключевое слово является взаимоисключающим по отношению к другим ключевым словам строки соединения. This keyword is mutually exclusive with all the other connection string keywords.

Ниже приведен пример строки подключения для модели AdventureWorks Sales , хранящейся в файле конфигурации приложения. The following is an example of a connection string for the AdventureWorks Sales Model stored in the application configuration file:

Расположение файла модели и сопоставления Model and Mapping File Locations

Параметр Metadata содержит список местоположений, в которых поставщик EntityClient выполняет поиск файлов модели и сопоставления. The Metadata parameter contains a list of locations for the EntityClient provider to search for model and mapping files. Файлы модели и сопоставления часто развертываются в том же каталоге, что и исполняемый файл приложения. Model and mapping files are often deployed in the same directory as the application executable file. Эти файлы могут быть также развернуты в конкретном местоположении или включены в виде внедренного ресурса в приложение. These files can also be deployed in a specific location or included as an embedded resource in the application.

Внедренные ресурсы задаются следующим образом: Embedded resources are specified as follows:

Для определения расположения внедренного ресурса доступны следующие способы. The following options are available for defining the location of an embedded resource:

Параметр Option Описание Description
assemblyFullName Полное имя сборки с внедренным ресурсом. The full name of an assembly with the embedded resource. Это имя включает простое имя, имя версии, поддерживаемую культуру и открытый ключ следующим образом: The name includes the simple name, version name, supported culture, and public key, as follows:
Читайте также:  Часы эппл вотч характеристика

ResourceLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

Ресурсы можно внедрять в любую сборку, доступную для приложения. Resources can be embedded in any assembly that is accessible by the application.

Если для assemblyFullName указан подстановочный знак (*), среда выполнения Entity Framework будет искать ресурсы в следующих расположениях в указанном порядке: If you specify a wildcard (*) for assemblyFullName , the Entity Framework runtime will search for resources in the following locations, in this order:

1. вызывающая сборка. 1. The calling assembly.
2. сборки, на которые имеются ссылки. 2. The referenced assemblies.
3. сборки в каталоге Bin приложения. 3. The assemblies in the bin directory of an application.

Если файлы не найдены ни в одном из этих расположений, вызывается исключение. If the files are not in one of these locations, an exception will be thrown. Примечание. При использовании подстановочного знака (*) Entity Framework должен просмотреть все сборки для ресурсов с правильным именем. Note: When you use wildcard (*), the Entity Framework has to look through all the assemblies for resources with the correct name. В целях повышения производительности задавайте имя сборки, а не символ-шаблон. To improve performance, specify the assembly name instead of the wildcard.

resourceName Имя включаемого ресурса, например AdventureWorksModel. CSDL. The name of the included resource, such as AdventureWorksModel.csdl. Службы метаданных осуществляют поиск файлов или ресурсов только для расширений CSDL, SSDL и MSL. The metadata services will only look for files or resources with one of the following extensions: .csdl, .ssdl, or .msl. Если имя resourceName не указано, то загружаются все ресурсы метаданных. If resourceName is not specified, all metadata resources will be loaded. Ресурсы должны иметь в сборке уникальные имена. The resources should have unique names within an assembly. Если в сборке в разных каталогах указано несколько файлов с одинаковыми именами, то в resourceName перед именем ресурса должна быть представлена структура папок, например ИмяПапки.ИмяФайла.csdl. If multiple files with the same name are defined in different directories in the assembly, the resourceName must include the folder structure before the name of the resource, for example FolderName.FileName.csdl.

Указание resourceName не требуется, если для assemblyFullName задан символ-шаблон (*). resourceName is not required when you specify a wildcard (*) for assemblyFullName .

В целях повышения производительности рекомендуется внедрять ресурсы в вызывающую сборку с учетом того, что в приложениях, отличных от веб-приложений, такая рекомендация становится неприменимой, поскольку в вызывающей сборке отсутствуют ссылки на файлы сопоставлений и метаданных. To improve performance, embed resources in the calling assembly, except in non-Web scenarios where there is no reference to underlying mapping and metadata files in the calling assembly.

В следующем примере загружаются все файлы модели и сопоставления из вызывающей сборки, а также сборок, указанных в ссылках, и других сборок в каталоге bin приложения. The following example loads all the model and mapping files in the calling assembly, referenced assemblies, and other assemblies in the bin directory of an application.

В следующем примере загружаются файл model.csdl из сборки AdventureWorks, а также файлы model.ssdl и model.msl из каталога по умолчанию выполняющегося приложения. The following example loads the model.csdl file from the AdventureWorks assembly, and loads the model.ssdl and model.msl files from the default directory of the running application.

В следующем примере загружаются три заданных ресурса из указанной сборки. The following example loads the three specified resources from the specific assembly.

В следующем примере из сборки загружаются все внедренные ресурсы с расширениями CSDL, SSDL и MSL. The following example loads all the embedded resources with the extensions .csdl, .msl, and .ssdl from the assembly.

Следующий пример загружает все ресурсы в относительный путь к файлу плюс "датадирметадата" из расположения загруженной сборки. The following example loads all the resources in the relative file path plus "datadirmetadata" from the loaded assembly location.

В следующем примере из расположения загруженной сборки загружаются все ресурсы, которые обозначены относительным путем к файлу. The following example loads all the resources in the relative file path from the loaded assembly location.

|Поддержка строки| подстановки DataDirectory и корневого оператора веб-приложения (

) Support for the |DataDirectory| Substitution String and the Web Application Root Operator (

DataDirectory и оператор

используются в ConnectionString как часть ключевых слов Metadata и Provider Connection String . DataDirectory and the

operator are used in the ConnectionString as part of the Metadata and Provider Connection String keywords. В соединении EntityConnection параметр DataDirectory и оператор

передаются MetadataWorkspace и поставщику хранилища соответственно. The EntityConnection forwards the DataDirectory and the

operator to MetadataWorkspace and the store provider, respectively.

Термин Term Описание Description
|DataDirectory| Преобразуется в относительный путь к файлам сопоставлений и метаданных. Resolves to a relative path to a mapping and metadata files. Это значение определяется с помощью метода AppDomain.SetData("DataDirectory", objValue) . This is the value that is set through the AppDomain.SetData("DataDirectory", objValue) method. Строка подстановки DataDirectory должна быть заключена в символы вертикальной черты, и между ее именем и символами вертикального пробела не должно быть пробелов. The DataDirectory substitution string must be surrounded by the pipe characters and there cannot be any white space between its name and the pipe characters. Имя DataDirectory обрабатывается без учета регистра. The DataDirectory name is not case-sensitive.

Если физический каталог с именем "DataDirectory" должен передаваться как член списка путей метаданных, добавьте пробелы в одну или обе стороны имени. If a physical directory named "DataDirectory" has to be passed as a member of the list of metadata paths, add white space to either or both sides of the name. Пример: Metadata="DataDirectory1 | DataDirectory | DataDirectory2" . For example: Metadata="DataDirectory1 | DataDirectory | DataDirectory2" . Приложение ASP.NET разрешает |подкаталог DataDirectory| в папку " /App_Data". An ASP.NET application resolves |DataDirectory| to the "/app_data" folder.

Преобразуется в корневой каталог веб-приложения. Resolves to the Web application root. Символ

в ведущей позиции всегда интерпретируется как оператор определения корневого каталога веб-приложения (

), хотя и может представлять допустимый локальный подкаталог. The

character at a leading position is always interpreted as the Web application root operator (

), although it might represent a valid local subdirectory. Для ссылки на локальный подкаталог пользователь должен явно передать ./

. To refer to such a local subdirectory, the user should explicitly pass ./

Значение DataDirectory и оператор

должны быть указаны только в начале пути, поскольку их преобразование в любой другой позиции не происходит. DataDirectory and the

operator should be specified only at the beginning of a path, they are not resolved at any other position. Платформа Entity Framework пытается преобразовать

/data , но рассматривает /data/

как физический путь. The Entity Framework will try to resolve

/data , but it will treat /data/

as a physical path.

Путь, начинающийся с DataDirectory или оператора

, нельзя преобразовать в физический путь вне ветви DataDirectory и оператора

. A path that starts with the DataDirectory or the

operator cannot resolve to a physical path outside the branch of the DataDirectory and the

operator. Например, следующие пути будут преобразованы так:

/bin/Model/SqlServer . For example, the following paths will resolve:

/bin/Model/SqlServer . Попытка преобразования следующих путей завершится ошибкой:

/../other . The following paths will fail to resolve:

DataDirectory и оператор «

» могут включать подкаталоги: |DataDirectory|Model ,

/bin/Model . DataDirectory and the

operator can be extended to include sub-directories, as follows: |DataDirectory|Model ,

Процесс разрешения строки подстановки DataDirectory и оператора

является нерекурсивным. The resolution of the DataDirectory substitution string and the

operator is non-recursive. Например, если DataDirectory включает символ

, возникает исключение. For example, when DataDirectory includes the

character, an exception will occur. Тем самым предотвращается бесконечная рекурсия. This prevents an infinite recursion.

Комментировать
0 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector