Могу ли я указать имя файла для базы данных localdb в инфраструктуре сущности 5?

Если я использую Entity Framework 5 с LocalDb, есть ли способ указать имя файла базы данных в файле app.config/web.config?

Ответ 1

При дальнейших исследованиях это выглядит очень просто, но неясно при чтении документов.

Прежде всего вам нужно, чтобы часть фреймворка сущности конфигурации

  <entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
  <parameters>
    <parameter value="v11.0" />
  </parameters>
</defaultConnectionFactory>

После этого вам нужно указать строку подключения. По умолчанию имя строки подключения - это полное имя вашего контекста. Поэтому в моем тестовом приложении контекст был назван "DataModel.Context", поэтому мне нужна строка подключения для "DataModel.Context"

  <connectionStrings>
<add name="DataModel.Context" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=database;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\database.mdf" providerName="System.Data.SqlClient" />

Затем используется файл 'database.mdf' в каталоге данных проекта.

Ответ 2

Как отметил Ник, вам нужно предоставить connectionString вне тегов <entityFramework>. Таким образом, образец App.config может быть таким:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <connectionStrings>
    <add name="CSOMLocalDataProvider.CSOMContext"
    connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=D:\path\to\Database.mdf;Integrated Security=True" providerName="System.Data.SqlClient"/>
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>

также обратите внимание, что <parameter value="mssqllocaldb" /> зависит от версии вашего SQL Server. Проверьте этот ответ для получения дополнительной информации.