Как получить каталог базы данных? - PullRequest
0 голосов
/ 11 мая 2011

Я использую базу данных Microsoft, которая находится в папке C:\wpf1\WpfApplication1\WpfApplication1.Когда я обновляю базу данных, она всегда обновляет ту, что внутри C:\wpf1\WpfApplication1\WpfApplication1\bin\Debug, которая мне не нужна.

Как мне получить папку C:\wpf1\WpfApplication1\WpfApplication1 без ввода этого полного имени?

Ответы [ 2 ]

1 голос
/ 11 мая 2011

Здесь есть статья о SQL Server Compact Edition

Я не думаю, что что-то изменилось в более новых выпусках, хотя прошло какое-то время, так как я использовал его.

| DataDirectory |работает следующим образом

Строка подключения обычно выглядит следующим образом: «Источник данных = | DataDirectory | \ Mydb.sdf»

Чтобы установить свойство DataDirectory, вызовите метод AppDomain.SetData.

Если вы не установите свойство DataDirectory, для доступа к папке базы данных будут применены следующие правила по умолчанию:

Для приложений, которые находятся в папке на компьютере пользователя, папка базы данныхиспользует папку приложения.(это правило по умолчанию, которое применяется при отладке, и, следовательно, почему база данных в \ bin \ debug обновляется)

Для приложений, работающих под ClickOnce, папка базы данных использует специальную папку данных, которая

В прошлом я делал следующее

Обработка события SettingsLoaded в settings.vb

        Private Sub MySettings_SettingsLoaded(sender As Object, e As System.Configuration.SettingsLoadedEventArgs) Handles Me.SettingsLoaded

        If Not Debugger.IsAttached Then
            My.Settings.SQLCEConnectionString = "somefolder\somefile.sdf"
        End If

    End Sub
0 голосов
/ 11 мая 2011

Каталог C:\wpf1\WpfApplication1\WpfApplication1 - это каталог вашего проекта - это тот, в котором находится исходный код, но обычно он не является каталогом, с которым ваше приложение обычно знакомо или с которым работает (например, если ваше приложение установлено в другое приложение). ПК, тогда этот каталог просто не будет существовать).

Обычный подход при работе с базами данных или зависимыми файлами заключается в следующем:

  • Поместите файл в другое место (например, в папку на диске C:)
  • Просто заставьте приложение работать с копией файла в выходном каталоге (bin\Debug\), то есть в каталоге, в который будет установлено приложение - вы можете изменить свойства элемента в вашем решении, чтобы иметь элемент копируется в выходной каталог, либо постоянно, либо только в том случае, если элемент в каталоге решений более новый:

Screenshot of the properties pane for a project item in Visual Studio

Если вы действительно хотите использовать каталог C:\wpf1\WpfApplication1\WpfApplication1, то способ сделать это - предположить, что этот каталог всегда будет на 2 выше, чем текущий рабочий каталог:

Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, "..\\.."));

Это, конечно, делает два ужасных предположения: во-первых, текущий каталог - это каталог, в котором находится .exe, и во-вторых, что нужный каталог всегда на 2 выше этого каталога - я настоятельно рекомендую вам найти другой способ поскольку такая логика вряд ли будет работать на компьютере конечного пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...