Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
5 / 5 / 0
Регистрация: 11.09.2021
Сообщений: 578
MS SQL

Как определить местоположение БД?

27.11.2022, 09:37. Показов 849. Ответов 6

Студворк — интернет-сервис помощи студентам
Как определить местоположение БД?

Открыл свой старый пример.
Не могу понять где находится БД.

При каждом запуске приложения в таблицу Categories добавляется запись:
C#
1
2
3
4
Category category = new Category
{
   Name = "Name_Category_4"
};
Используется:
WPF - .NET Framework 4.7.2
EntityFramework - 6.4.0

Проект создавался по материалам:
https://learn.microsoft.com/ru... dfrom=MSDN


App.config

XML
1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>
</configuration>

Category.cs
C#
1
2
3
4
5
6
7
8
using System.ComponentModel.DataAnnotations.Schema;
 
[Table("Categories")]
public class Category
{   
    public int CategoryId { get; set; }
    public string Name { get; set; }
}

MainWindow.xaml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<Window x:Class="WpfAppFrm_05.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfAppFrm_05"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="309.821" Loaded="Window_Loaded">
    <Window.Resources>
        <CollectionViewSource x:Key="categoryViewSource"
                                d:DesignSource="{d:DesignInstance {x:Type local:Category}, CreateList=True}"/>
        <CollectionViewSource x:Key="categoryProductsViewSource" 
                              Source="{Binding Products, Source={StaticResource categoryViewSource}}"/>
    </Window.Resources>
    <Grid DataContext="{StaticResource categoryViewSource}" Margin="0,0,7,0">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="33*"/>
            <ColumnDefinition Width="287*"/>
            <ColumnDefinition Width="0*"/>
            <ColumnDefinition Width="0*"/>
        </Grid.ColumnDefinitions>
        <DataGrid x:Name="categoryDataGrid" AutoGenerateColumns="False" EnableRowVirtualization="True"
                    ItemsSource="{Binding}" Margin="13,13,3,257"
                    RowDetailsVisibilityMode="VisibleWhenSelected" Grid.ColumnSpan="2">
            <DataGrid.Columns>
                <DataGridTextColumn x:Name="categoryIdColumn" Binding="{Binding CategoryId}"
                                    Header="CategoryId" Width="SizeToHeader"/>
                <DataGridTextColumn x:Name="nameColumn" Binding="{Binding Name}"
                                    Header="Name" Width="SizeToCells"/>
                                    
            </DataGrid.Columns>
        </DataGrid>
 
    </Grid>
</Window>

MainWindow.xaml.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System.ComponentModel;
using System.Windows;
using System.Windows.Data;
using System.Data.Entity;
 
/// <summary>
/// Логика взаимодействия для MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{        
    public static string сonnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\NorthwindC_05.mdf;Integrated Security=True;Connect Timeout=30";
            
    private ProductContext _context = new ProductContext();
    public MainWindow()
    {
        InitializeComponent();
    }
 
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {       
             CollectionViewSource categoryViewSource = (CollectionViewSource)this.FindResource("categoryViewSource");
            _context.Categories.Load();
            BindingList<Category> _studBindList = _context.Categories.Local.ToBindingList();
            categoryViewSource.Source = _context.Categories.Local;
 
               
        AddEntity();                
        // Clear();         
    }
    public void AddEntity()
    {
        Category category = new Category
        {
            Name = "Name_Category_4"
        };
 
        _context.Categories.Add(category);
        _context.SaveChanges();         
    }        
 
    public void Clear()
    {
         _context.Categories.RemoveRange(_context.Categories);
        _context.SaveChanges();
 
    }
}


ProductContext.cs
C#
1
2
3
4
5
6
using System.Data.Entity;
 
public class ProductContext : DbContext
{        
    public DbSet<Category> Categories { get; set; }        
}
Миниатюры
Как определить местоположение БД?   Как определить местоположение БД?   Как определить местоположение БД?  

Изображения
 
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.11.2022, 09:37
Ответы с готовыми решениями:

Определить местоположение БД
Привет, Форум. Изучил эту статью. Не пойму где лежит сам файл с БД и в каком он формате? Может кто подсказать?

Определить местоположение сторонней программы
Ребят, подскажите, как определить местоположение сторонней программы, например того же Skype или какого-нибудь приложения? Как реализовать?

Определить местоположение каретки в TextBox
Здравствуйте, друзья. Начну сразу с вопроса: Как в TextBox'е определить местоположение каретки? Да, да, именно та самая кареточка,...

6
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,424
27.11.2022, 10:53
Цитата Сообщение от dev3214 Посмотреть сообщение
Как определить местоположение БД?
Посмотреть на строку подключения)
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
27.11.2022, 11:01
dev3214, App.xaml.cs покажите тоже
1
5 / 5 / 0
Регистрация: 11.09.2021
Сообщений: 578
27.11.2022, 11:28  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Посмотреть на строку подключения)
Дело в |DataDirectory| ?
Я вроде его не устанавливаю.
Что происходит если его не устанавливать?


Цитата Сообщение от OwenGlendower Посмотреть сообщение
, App.xaml.cs покажите тоже
App.xaml.cs
C#
1
2
3
4
5
6
7
8
using System.Windows;
    /// <summary>
    /// Логика взаимодействия для App.xaml
    /// </summary>
    public partial class App : Application
    {
 
    }

---



У меня всё работает если прописать полный путь к БД.

Вопросы.
1. Как сформировать строку подключения для разных расположений БД?
Расположение проекта: \Project\WpfAppFrm_05

БД расположение-1: \Project\WpfAppFrm_05\DB\NorthwindC_05.m df
БД расположение-2: \Project\WpfAppFrm_05\bin\Debug\Northwin dC_05.mdf
БД расположение-3: \Project\WpfAppFrm_05\bin\Debug\DB\North windC_05.mdf
БД расположение-4: \Project\DB\NorthwindC_05.mdf

2. Что писать в строке подключения?
Встречал варианты:
- AttachDbFilename (мой текущий вариант);
- Database;
- Initial Catalog;
Что и когда использовать?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
27.11.2022, 11:45
Цитата Сообщение от dev3214 Посмотреть сообщение
Как сформировать строку подключения для разных расположений БД?
Расположение проекта: \Project\WpfAppFrm_05
БД расположение-1: \Project\WpfAppFrm_05\DB\NorthwindC_05.m df
БД расположение-2: \Project\WpfAppFrm_05\bin\Debug\Northwin dC_05.mdf
БД расположение-3: \Project\WpfAppFrm_05\bin\Debug\DB\North windC_05.m df
БД расположение-4: \Project\DB\NorthwindC_05.mdf
Все четыре варианта решаются установкой значения DataDirectory на нужный каталог. Про расположение проекта тут кстати думать не надо. На этапе выполнения приложения никакого проекта нет. Роль играет только относительное расположение приложения и файла БД.

Цитата Сообщение от dev3214 Посмотреть сообщение
Что писать в строке подключения?
Встречал варианты:
- AttachDbFilename (мой текущий вариант);
- Database;
- Initial Catalog;
Что и когда использовать?
AttachDbFilename когда используется файл БД. Два остальных когда подключение идет по имени БД на сервере.

Цитата Сообщение от dev3214 Посмотреть сообщение
Дело в |DataDirectory| ?
Я вроде его не устанавливаю.
И приложение работает? Вы там выше упоминали инструкцию от Microsoft, но у них подключение по другому реализовано.
1
5 / 5 / 0
Регистрация: 11.09.2021
Сообщений: 578
27.11.2022, 13:21  [ТС]
OwenGlendower,
Понял...
Попробую установить актуальный путь к приложению в |DataDirectory|.

Цитата Сообщение от OwenGlendower Посмотреть сообщение
И приложение работает? Вы там выше упоминали инструкцию от Microsoft, но у них подключение по другому реализовано.
Да. Приложение работает.

Если рассматривать картинки приложенные к вопросу слева направо.
1. Картинка-1. Открывается приложение при отладке.
При каждой отладке добавляется запись Name_Category_4.
2. Картинка-2. Таблица Categories с данными.
Путь к БД: \Project\WpfAppFrm_05\DB\NorthwindC_05.mdf


3. Картинка-3. Таблица Categories с данными.
Путь к БД: \Project\WpfAppFrm_05\bin\Debug\DB\NorthwindC_05.mdf


Примечание.
На всё компьютере БД NorthwindC_05.mdf больше нет. Проверил.

Может в этих папках где-то есть?
c:\Program Files\Microsoft SQL Server\130\Tools\Binn\SqlLocalDB.exe
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
27.11.2022, 18:47
Цитата Сообщение от dev3214 Посмотреть сообщение
Может в этих папках где-то есть?
Файлы БД хранятся в соответствии с параметрами установленного инстанса СУБД.
То есть если в строке подключения есть просто Initial Catalog - это имя базы, то сами файлы базы и логи будут храниться в соответствии с настройками инстанса СУБД.

Однако если вы подключаете сторонний файл базы, о котором инстанс ничего не знает, то используется параметр AttachDbFilename - здесь указывается либо относительный (через |DataDirectory|), либо абсолютный путь к файлу базы.
При первом подключении, инстанс запоминает расположение файла, то есть аттачит его к себе (и видимо запоминает расположение этого файла), и далее при повторных подключениях уже использует этот самый файл, который запомнил.
При этом в доках пишется, что в дальнейших подключениях уже можно не использовать параметр AttachDbFilename, а использовать просто Initial Catalog.

AttachDbFilename:
The first time you connect to a database by using this option in the connection string, the SQL Server Express or LocalDB instance attaches the database, and it stays attached. When you want to connect to the same database in the future you could use Initial Catalog without AttachDbFileName if you prefer.
То есть в вашем случае используется один и тот же файл базы по пути: \Project\WpfAppFrm_05\bin\Debug\DB\NorthwindC_05.mdf
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.11.2022, 18:47
Помогаю со студенческими работами здесь

Определить местоположение улитки на дереве
Каждый солнечный день улитка, сидящая на дереве, поднимается вверх на 2 см, а каждый пасмурный день опускается вниз на 1 см.В начале...

Определить местоположение улитки к концу 30-го дня наблюдения
Каждый солнечный день улитка, сидящая на дереве, поднимается вверх на 2 см, а каждый пасмурный день опускается вниз на 1 см. В начале...

Определить местоположение точки относительно заданной области
Определить местоположение точки относительно заданной области (точка может лежать внутри области, лежать на границе области или не...

Определить местоположение минимального отрицательного элемента в квадратной матрице
Всем здравствуйте. На форуме новенький. Заголовок другой написать не удалось . В общем нужна помощь !!! 3. Определить местоположение...

Как Определить Местоположение Темы
и снова я =) подскажите, как по коду определить где находится данная тема? хочу найти описание данной темы... &lt;xp:panel...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru