Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Указать путь к базе (localdb) / 6 сообщений из 6, страница 1 из 1
18.03.2017, 17:33
    #39422227
__Pavel__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать путь к базе (localdb)
Здравствуйте!

Задача следующая:
Разработать приложение, которое бы таскало за собой БД. Вроде можно использовать SQL Server CE, но в будущем нужно будет делать приложение сетевым и базу засовывать в полноценный SQL Server. Обратил внимание на localdb, как я понял база у них одинаковая, т.к. localdb это немного урезанный SQL Server и при будущем расширении можно будет сделать простой импорт.

Попытался настроить подключение к базе в каталоге готовой программы и ничего не получилось...
Вот настройка подключения в App.config
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  <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>

  <connectionStrings>
    <add name="MyContext" connectionString="Server=(localdb)\MSSQLLocalDB; AttachDBFilename=|DataDirectory|DataBaseLD.mdf; Integrated Security=True;" providerName="System.Data.SqlClient"/>
  </connectionStrings>



При запуске проекта и попытке обратиться к базе выдает исключение
Код: plaintext
1.
A file activation error occurred. The physical file name '\DataBaseLD.mdf' may be incorrect. Diagnose and correct additional errors, and retry the operation.
CREATE DATABASE failed. Some file names listed could not be created. Check related errors.


Вроде все делаю как указано в десятке статей, но не работает... в чем проблема?
...
Рейтинг: 0 / 0
18.03.2017, 17:34
    #39422228
__Pavel__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать путь к базе (localdb)
UPD

Забыл добавить, что базы изначально нету и ошибка вылетает при попытке ее инициализации!
...
Рейтинг: 0 / 0
18.03.2017, 21:18
    #39422294
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать путь к базе (localdb)
"localdb это немного урезанный SQL Server" - это экспресс
...
Рейтинг: 0 / 0
18.03.2017, 21:22
    #39422296
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать путь к базе (localdb)
__Pavel__UPD

Забыл добавить, что базы изначально нету и ошибка вылетает при попытке ее инициализации!

http://kazimnami.azurewebsites.net/techblog/2012/11/24/error-a-file-activation-error-occurred-create-database-failed/
...
Рейтинг: 0 / 0
18.03.2017, 23:02
    #39422338
__Pavel__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать путь к базе (localdb)
Ролг Хупин,

Спасибо, помогло =)

П.С.
Ролг Хупин"localdb это немного урезанный SQL Server" - это экспресс
Если быть точным, то это урезанный SQL Server Express, но он не перестает от этого быть SQL Server'ом ;)
...
Рейтинг: 0 / 0
19.03.2017, 13:51
    #39422467
__Pavel__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Указать путь к базе (localdb)
Если кому интересно, то вот полное решение, как настроить работу EF с localdb в нужном месте (например, каталоге программы)

В App.config добавить ("MyContext" заменить на имя вашего контекста):
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  <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>

  <connectionStrings>
    <add name="MyContext" connectionString="Server=(localdb)\MSSQLLocalDB; AttachDBFilename=|DataDirectory|MyContext.mdf; Initial Catalog=MyContext; Integrated Security=True;" providerName="System.Data.SqlClient"/>
  </connectionStrings>



Чтобы хранить файлы базы в каталоге программы при загрузке приложения прописать:
Код: c#
1.
AppDomain.CurrentDomain.SetData("DataDirectory", System.IO.Directory.GetCurrentDirectory());



Если вам нужен другой путь хранения базы, то заменить "System.IO.Directory.GetCurrentDirectory()" на нужный каталог.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Указать путь к базе (localdb) / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]