SQL Server Express с вложенным файлом при использовании EF - PullRequest
0 голосов
/ 03 марта 2012

Как я могу использовать файл mdf, который должен находиться в каталоге решения (или в другом месте) в сочетании с Entity Framework? По умолчанию EF создает файл в «C: \ Program Files \ Microsoft SQL Server \ MSSQL10_50.SQLEXPRESS \ MSSQL \ DATA». Кроме того, было бы неплохо иметь возможность доступа к базе данных через одноранговую сеть Windows после запуска приложения .net, которое инициализирует экземпляр сервера.

Полагаю, мне нужно использовать строку подключения, похожую на эту: http://msdn.microsoft.com/en-us/library/bb264564%28v=sql.90%29.aspx,, который использует Пользовательский экземпляр и AttachDbFilename

В этом сообщении говорится, что я могу использовать строки подключения как обычно с EF: http://blogs.msdn.com/b/adonet/archive/2012/01/12/ef-4-3-configuration-file-settings.aspx

Что я получаю, когда использую собственную (не по умолчанию EF) строку подключения: инициализатор типа для 'System.Data.Entity.Internal.AppConfig' вызвал исключение (Конфигурация системы не удалось инициализировать)

<configuration>
  <connectionStrings>
    <add name="SomeContext"
      providerName="System.Data.SqlClient"
      connectionString="Server=.\SQLEXPRESS;
      AttachDbFilename=C:\temp\SomeNamespace.SomeContext.mdf; 
      Integrated Security=True;
      User Instance=True" />

  </connectionStrings>
...

Используемые версии:

SQL Server Express Edition R2 с пакетом обновления 1

EF 4.3.1 (сначала код)

1 Ответ

0 голосов
/ 04 марта 2012

Благодаря этим ответам мне удалось использовать пользовательское местоположение:

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

WPF иADO.NET EF - ошибка, часть II

Мои шаги были:

  • Копирование файлов .mdf и .LDF, созданных EF, туда, где я хотел, чтобы они были
  • Запуск Microsoft SQL Server Management Studio (Express) от имени администратора и удаление старой базы данных с помощью SSMS (которая была скопирована)
  • Присоединение скопированного файла .mdf на локальный сервер с помощью SSMS
  • Перестройка App.config так, чтобы configSections стояла перед разделом connectionStrings
  • Изменение строки подключения (больше не используются пользовательские экземпляры, которые все равно устарели)

MyApp.config теперь выглядит примерно так:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>    
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.3.1.0, Culture=neutral, PublicKeyToken=u57a3c561234h089" />
  </configSections>

  <connectionStrings>
  <add name="SomeContext"
      providerName="System.Data.SqlClient"
      connectionString="Server=.\SQLEXPRESS; Integrated Security=True; Database=SomeNamespace.SomeContext" />
  </connectionStrings>

  <entityFramework>
    <defaultConnectionFactory 
    ...
...