powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Указать путь к базе (localdb)
6 сообщений из 6, страница 1 из 1
Указать путь к базе (localdb)
    #39422227
__Pavel__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Задача следующая:
Разработать приложение, которое бы таскало за собой БД. Вроде можно использовать 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
Указать путь к базе (localdb)
    #39422228
__Pavel__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UPD

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

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

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

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

П.С.
Ролг Хупин"localdb это немного урезанный SQL Server" - это экспресс
Если быть точным, то это урезанный SQL Server Express, но он не перестает от этого быть SQL Server'ом ;)
...
Рейтинг: 0 / 0
Указать путь к базе (localdb)
    #39422467
__Pavel__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если кому интересно, то вот полное решение, как настроить работу 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
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Указать путь к базе (localdb)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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