@nicebmw9
Что было дальше ?

Что исправить в строке подключения к базе данных Entity Framework C#?

Есть база данных на SQL Server'е. Есть приложение, которое работает с этой базой по этой строке подключения:
<connectionStrings>
    <add name="IPhoneDBContext" connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=DESKTOP-K4U1293;initial catalog=IPhoneDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>

В самом приложении создавал подключение через 5ba2c6cad00ff694705304.pngПроблема: пробовал переместить файлы бд в папку с приложением и через разные строки подключения попробовать подключиться, но приложение выдавало одни исключения. Существует ли строка подключения к бд, которая находится в рабочем каталоге программы? Всё это делается, чтобы была возможность переносить приложение+бд на другие машины. Язык C#.
  • Вопрос задан
  • 941 просмотр
Пригласить эксперта
Ответы на вопрос 2
@basrach
Для того чтобы переносить базу данных вам нужно выбрать что использовать для начала:
1) Sql Server CE (Compact Edition) - урезанный движок, который можно таскать с собой в виде библиотеки. Но он deprecated с 13 года.
2 ) Sql Server LocalDB. Но его нужно устанавливать отдельно на каждой машине. Он поставлялся раньше вместе с VisualStudio, сейчас не знаю.
3) sqlite, которая будет работать везде, но у нее есть свои минусы.
4) Использовать обычный инстанс Sql Server (возможно Express, не важно), и таскать с собой только базу.
В зависимости от того что вы выберете будет меняться строка подключения. Сейчас она у вас для обычного инстанса Sql Server:
data source=DESKTOP-K4U1293;initial catalog=IPhoneDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework
.
Например для варианта 4, нужно ее изменить на:
Server=DESKTOP-K4U1293;AttachDbFilename=|DataDirectory|mydbfile.mdf;Database=IPhoneDB;
Trusted_Connection=Yes;
.
Для варианта 2:
Server=(localdb)\v11.0;Integrated Security=true;
AttachDbFileName=|DataDirectory|mydbfile.mdf;

Вт тут много примеров.
Ответ написан
Комментировать
@dmitryKovalskiy
программист средней руки
Так вам же скриншот все написал. Что вы еще хотите? Согласно скриншоту - у вас модели явно описаны подходом CodeFirst, а показанный connection string имеет ссылки на модели сопоставления классов - сущностям в бд (DatabaseFirst). Тут или крестик или трусы. Насколько я помню подход CodeFirst - connection string должен содержать только расположение сервера БД и реквизиты, достаточные для манипуляции как с данными, так и со структурами таблиц. Касательно переноса - вообще проблемы не понял и не увидел, это уже какие-то ваши фантазии. Приложение содержит конфиг, в нем строки соединения с БД. Что еще вы хотите? Да, при деплое проекта - в полученном дистрибутиве, или что вы там надеплоите, будет конфиг, содержащий connection string
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы