Строка подключения C# Entity Framework SQL Server Express

Я использую C # WPF EF6.0 и SQL Server Express для окончательной программы.

Я создал установочный файл с расширенным установщиком, который создает базу данных с помощью скрипта и SQL Server Express в

C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA

и я изменил свое строковое соединение с

<add name="MyDBEntities" 
     connectionString="metadata=res://*/MyDBModel.csdl|res://*/MyDBModel.ssdl|res://*/MyDBModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\MyDB.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />

К этому

<add name="MyDBEntities" 
     connectionString="metadata=res://*/MyDBModel.csdl|
                       res://*/MyDBModel.ssdl|
                       res://*/MyDBModel.msl;
                       provider=System.Data.SqlClient;
                       provider connection string=&quot;
                             Data source=.\SQLExpress;
                             integrated security=True;
                             MultipleActiveResultSets=True;
                             Initial Catalog=MyDB;
                             App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />  

Я установил .net Framework 4.5 и SQL Server 2012 с пакетом обновления 1 версии 11.0.300, которые я использовал в Visual Studio 2013.

Когда я устанавливаю свою программу, все работает, но когда я запускаю свою программу, она перестала работать при первом запуске. Я думаю, что в строке подключения есть проблема. Если я нажму отладку в Visual Studio, я увижу эту ошибку

Необработанное исключение типа «System.InvalidOperationException» возникло в EntityFramework.dll. Дополнительная информация: в файле конфигурации приложения не удалось найти строку подключения с именем «MyDBEntities».


person yasser93    schedule 05.09.2016    source источник
comment
вы получаете какую-либо ошибку ..   -  person Venky    schedule 05.09.2016
comment
Нет просто перестал работать   -  person yasser93    schedule 05.09.2016
comment
если я нажму кнопку «Отладка» в визуальном отображении этой ошибки. => Необработанное исключение типа «System.InvalidOperationException» произошло в EntityFramework.dll. Дополнительная информация: в файле конфигурации приложения не найдена строка подключения с именем «MyDBEntities».   -  person yasser93    schedule 05.09.2016


Ответы (2)


Причина в том, что вы не прикрепили файлы базы данных к локальному механизму базы данных. попробуйте использовать соответствующие доступные методы SQL Server. Ваше приложение (после установки) не может найти базу данных в локальном движке БД.

person Media    schedule 05.09.2016
comment
Есть разные способы, одним из них может быть использование sp_attach_db в SQL Server и написание процедуры, учтите этот момент, что этого метода не должно быть в перемещаемой базе данных. причина в том, что вы не подключили свою БД, поэтому вы не можете использовать ее процедуры. для получения дополнительной информации используйте msdn.microsoft.com/en-us/library/ms190794. aspx - person Media; 05.09.2016
comment
Могу ли я использовать attachdbfilename в строке подключения и указать это местоположение??=>C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA - person yasser93; 05.09.2016
comment
На самом деле вы используете процесс установки, поэтому кажется, что вы хотите, чтобы ваше приложение было переносимым, поэтому вам не следует использовать абсолютный путь. и об упомянутом атрибуте, я думаю, вам следует взглянуть на connectionstrings.com/sql-server- 2012 - person Media; 05.09.2016
comment
я новичок в этом. Когда я использую встроенный скрипт в Advance Installer и использую SQL Express, он создает базу данных в этом месте. я не понимаю сложных способов - person yasser93; 05.09.2016
comment
Вы включили файлы базы данных в папки установщика? - person Media; 05.09.2016
comment
нет, я просто создаю скрипт из своей базы данных в Predefined Connection. поэтому при установке приложения скрипт работает и делает мою базу данных в указанном выше месте - person yasser93; 05.09.2016
comment
На самом деле я сомневаюсь, что это работает. потому что я предполагаю, что этот процесс не отсоединяет базу данных - person Media; 05.09.2016
comment
теперь я включил myDB в приложение папки и использую attachdbfilename=|DataDirectory|\MyDB.mdf; но у меня такая же ошибка - person yasser93; 05.09.2016
comment
Логично, что это не работает, перейдите на свой сервер sql, отсоедините базу данных, скопируйте файлы в отдельную папку с достаточными правами, затем включите данные базы данных и файлы журнала в папки установки. - person Media; 05.09.2016
comment
я запутался. каков стандартный способ создания установочного файла. я вижу много обучающих видео, которые используют тот же способ и его работу для них. я не понимаю проблемы - person yasser93; 05.09.2016
comment
Они когда-либо подключали базу данных в своей установке? - person Media; 05.09.2016
comment
Посмотрите на это: stackoverflow.com/questions/20772846/ и codeproject.com/Articles/16231/ - person Media; 05.09.2016

Наконец, я не смог создать установочный файл с Advanced Installer. Но я создал его Install Shield. Моя проблема заключалась в вставке, удалении или редактировании из базы данных. Я установил свою программу на другой диск, и моя проблема решена. Причина была в шутке, что программные файлы в C это readonly.

person yasser93    schedule 05.09.2016