С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
5 / 5 / 3
Регистрация: 15.01.2017
Сообщений: 690
MS SQL

Как определить где находится база данных с которой работает приложение?

14.02.2020, 22:46. Показов 2255. Ответов 11

Студворк — интернет-сервис помощи студентам
Как определить где находится база данных с которой работает приложение?

Запускаю приложение.
Приложение добавляет и получает записи.
Приложение добавляет и получает записи не в ту базу данных к которой выполняется подключение в коде.
Я не могу понять с какой базой данных работает приложение.

Category.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 
using System.Collections.ObjectModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
 
namespace WpfAppFrm
{
    [Table("Categories")]
    public class Category
    {        
        public Category()
        {
            // this.Products = new ObservableCollection<Product>();
        }
 
        public int CategoryId { get; set; }
        public string Name { get; set; }
 
        // public virtual ObservableCollection<Product> Products { get; private set; }
 
    }
}
ProductContext.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 
using System.Data.Entity;
 
namespace WpfAppFrm
{
    public class ProductContext : DbContext
    {
        // public ProductContext() : base("DefaultConnection")
        public string ConnectionString_test { get; set; }
        public ProductContext(string сonnectionString)
        {
            this.ConnectionString_test = сonnectionString;
        }
 
        public DbSet<Category> Categories { get; set; }
        // public DbSet<Product> Products { get; set; }
    }
}

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//
using System.ComponentModel;
using System.Data.Entity;
 
namespace WpfAppFrm
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        // public static string сonnectionString = @"C:\test\DB\NorthwindC.mdf";
        public static string сonnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\test\DB\NorthwindC.mdf;Integrated Security=True;Connect Timeout=30";
        // public static string сonnectionString = @"Data Source=(localdb)\mssqllocaldb;Initial Catalog=WpfAppFrm.ProductContext;Integrated Security=True; MultipleActiveResultSets=True";
        private ProductContext _context = new ProductContext(сonnectionString);
 
        public MainWindow()
        {
            InitializeComponent();
        }
 
 
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            try
            {
                System.Windows.Data.CollectionViewSource categoryViewSource =
                ((System.Windows.Data.CollectionViewSource)(this.FindResource("categoryViewSource")));
 
                _context.Categories.Load();
 
                BindingList<Category> _studBindList = _context.Categories.Local.ToBindingList();
 
                categoryViewSource.Source = _context.Categories.Local;
 
                // AddEntity();
                // GetAll();
                string connectionString_str = _context.Database.Connection.ConnectionString;
                string connectionString_str2 = _context.ConnectionString_test;
            }
            catch (Exception ex)
            {
                throw;
            }
        }        
 
        public void AddEntity()
        {
            Category category = new Category
            {
                Name = "Name_Category_4"
            };
 
            _context.Categories.Add(category);
            _context.SaveChanges();
        }
 
        public void GetAll()
        {
            _context.Categories.Load();
 
            BindingList<Category> _studBindList = _context.Categories.Local.ToBindingList();
        }
    }
}
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
<Window x:Class="WpfAppFrm.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"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="334.874" 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="SizeToHeader"/>
            </DataGrid.Columns>
        </DataGrid>
 
    </Grid>
</Window>
TABLE [dbo].[Categories]
SQL
1
2
3
4
5
CREATE TABLE [dbo].[Categories] (
    [CategoryId] INT           IDENTITY (1, 1) NOT NULL,
    [Name]       NVARCHAR (40) NULL,
    PRIMARY KEY CLUSTERED ([CategoryId] ASC)
);
Миниатюры
Как определить где находится база данных с которой работает приложение?   Как определить где находится база данных с которой работает приложение?   Как определить где находится база данных с которой работает приложение?  

0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.02.2020, 22:46
Ответы с готовыми решениями:

Как определить, что стороннее приложение уже закончило обработку данных и находится в запущенном состоянии
Посредством API из основной программы запускается стороннее приложение, которое выполняет какие то задачи (открывает, конвертирует и...

Как получить путь к папке, в которой находится приложение?
В методе onCreate (android studio), как получить путь к папке, в которй находится android приложение. @Override protected...

Как получить массив каталогов директории в которой находится данное приложение
Привет всем, подскажите как получить масив каталогов(папок) дериктории в которой находится даное приложения. Дерикторию где запустили файл...

11
Эксперт .NET
 Аватар для Usaga
14121 / 9338 / 1350
Регистрация: 21.01.2016
Сообщений: 35,079
15.02.2020, 04:59
Цитата Сообщение от Soft17 Посмотреть сообщение
Как определить где находится база данных с которой работает приложение?
Посмотреть на строку подключения.
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
15.02.2020, 07:48
Soft17,
Цитата Сообщение от Soft17 Посмотреть сообщение
AttachDbFilename=C:\test\DB\NorthwindC.m df
0
5 / 5 / 3
Регистрация: 15.01.2017
Сообщений: 690
15.02.2020, 09:26  [ТС]
Usaga, Igr_ok,

Делаю:
1. Window_Loaded. Раскомментировал `AddEntity();`, `GetAll();`.
2. Запускаю отладку.
3. Метод `AddEntity();` добавляет запись `Name = "Name_Category_4"`.
4. Метод `GetAll();` показывает все записи таблицы `Categories`. (см. вопрос картинка "Результат запуска приложения")
Причём в таблице хранятся записи с предыдущих сеансов отладки.

5. Закрываю отладку.

6. База данных "C:\test\DB\NorthwindC.mdf".
Захожу в "Microsoft SQL Server Management Studio 18"
Подключаюсь к "(LocalDb)\MSSQLLocalDB".
Открываю таблицу.
Результат см. картинку.


Дополняю.
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>
Вопрос.
1. Где находится база данных и таблица с которой работает приложение?
Миниатюры
Как определить где находится база данных с которой работает приложение?  
0
5 / 5 / 3
Регистрация: 15.01.2017
Сообщений: 690
15.02.2020, 10:21  [ТС]
В выражении
C#
1
string connectionString_str = _context.Database.Connection.ConnectionString;
получаю
"Data Source=(localdb)\mssqllocaldb;Initial Catalog=WpfAppFrm.ProductContext;Integra ted Security=True;MultipleActiveResultSets=T rue"
0
Эксперт .NET
 Аватар для Usaga
14121 / 9338 / 1350
Регистрация: 21.01.2016
Сообщений: 35,079
15.02.2020, 10:53
Soft17, ну и? Вы на две разные базы смотрите.
1
5 / 5 / 3
Регистрация: 15.01.2017
Сообщений: 690
15.02.2020, 13:36  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Soft17, ну и? Вы на две разные базы смотрите.
Не понимаю...
Как я смотрю на две разные базы?

В коде прописана база "C:\test\DB\NorthwindC.mdf".
C#
1
        public static string сonnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\test\DB\NorthwindC.mdf;Integrated Security=True;Connect Timeout=30";
В "Microsoft SQL Server Management Studio 18" открыта база "C:\test\DB\NorthwindC.mdf".

Что не так?
0
Эксперт .NET
 Аватар для Usaga
14121 / 9338 / 1350
Регистрация: 21.01.2016
Сообщений: 35,079
15.02.2020, 13:47
Цитата Сообщение от Soft17 Посмотреть сообщение
Что не так?
Вот это:
Цитата Сообщение от Soft17 Посмотреть сообщение
В выражении
C#Выделить код
1
string connectionString_str = _context.Database.Connection.ConnectionS tring;
получаю
"Data Source=(localdb)\mssqllocaldb;Initial Catalog=WpfAppFrm.ProductContext;Integra ted Security=True;MultipleActiveResultSets=T rue"
1
5 / 5 / 3
Регистрация: 15.01.2017
Сообщений: 690
15.02.2020, 16:50  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Вот это:
Сообщение от Soft17
В выражении
C#Выделить код
1
string connectionString_str = _context.Database.Connection.ConnectionS tring;
получаю
"Data Source=(localdb)\mssqllocaldb;Initial Catalog=WpfAppFrm.ProductContext;Integra ted Security=True;MultipleActiveResultSets=T rue"
Прошу извинить, но всё равно не понимаю...

Я устанавливаю строку "C:\test\DB\NorthwindC.mdf"
C#
1
public static string сonnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\test\DB\NorthwindC.mdf;Integrated Security=True;Connect Timeout=30";
Когда я запрашиваю строку обратно, то получаю
C#
1
Initial Catalog=WpfAppFrm.ProductContext
где
"WpfAppFrm" - имя решения;
ProductContext - имя класса контекста;

Вопрос
Как определить путь к базе в которую происходит сохранение данных из метода `AddEntity()`?

Добавлено через 2 часа 53 минуты
Usaga,

Нашёл...

Помню. что где-то читал...

При первом запуске создаётся БД.
В моём случае создалась БД WpfAppFrm.ProductContext с таблицей Categories на сервере (localdb)\mssqllocaldb.

Вот он туда и создаёт записи.

Вопрос.
Почему приложение создаёт свою БД и продолжает с ней работать, если я ему установил строку подключения с другой базой данных?
0
Эксперт .NET
 Аватар для Usaga
14121 / 9338 / 1350
Регистрация: 21.01.2016
Сообщений: 35,079
16.02.2020, 06:43
Soft17, у вас две разные строки подключения, которые смотрят на разные базы. В этом и проблема. Нормально под отладчиком уже посмотрите какую строку подключения вы в контекст передаёте.
1
5 / 5 / 3
Регистрация: 15.01.2017
Сообщений: 690
16.02.2020, 17:20  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Soft17, у вас две разные строки подключения, которые смотрят на разные базы. В этом и проблема. Нормально под отладчиком уже посмотрите какую строку подключения вы в контекст передаёте.
На основании раздела документации Database Initialization in Entity Framework 6. entityframeworktutorial.net подозреваю, что проблема в строке подключения.
Если я правильно понял, то Entity Framework не устраивает моя строка подключения,
поэтому он создаёт свою БД и работает с ней.

Вопрос.
1. Что не так с моей строкой подключения?
2. Как выявить ошибки в строке подключения?
3. Почему, несмотря на, то, что я передаю строку в которой прописана база данных "NORTHWINDC.MDF", приложение всё равно продолжает работать с "WpfAppFrm.ProductContext"?

Обновление.
1. Переименовал БД.
Было: "C:\test\DB\NorthwindC.mdf"
Стало: "NORTHWINDC.MDF"

2. Изменил код MainWindow.xaml.cs.
Код 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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
//
using System.ComponentModel;
using System.Data.Entity;
 
namespace WpfAppFrm
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        // public static string сonnectionString = @"C:\test\DB\NorthwindC.mdf";
        // public static string сonnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\test\DB\NorthwindC.mdf;Integrated Security=True;Connect Timeout=30";
        // public static string сonnectionString = @"Data Source=(localdb)\mssqllocaldb;Initial Catalog=WpfAppFrm.ProductContext;Integrated Security=True; MultipleActiveResultSets=True";
        // public static string сonnectionString = @"Data Source=(localdb)\mssqllocaldb;Initial Catalog=C:\test\DB\NorthwindC.mdf;Integrated Security=True;    MultipleActiveResultSets=True";
        // public static string сonnectionString = @"Data Source=(localdb)\mssqllocaldb;Initial Catalog=NorthwindC.mdf;Integrated Security=True;   MultipleActiveResultSets=True";
        // 
        public static string сonnectionStringStart;
        private ProductContext _context;
 
 
 
        public MainWindow()
        {
            InitializeComponent();
          
            сonnectionStringStart = @"Data Source=(localdb)\mssqllocaldb;Initial Catalog=NORTHWINDC.MDF;Integrated Security=True;MultipleActiveResultSets=True";
            _context = new ProductContext(сonnectionStringStart);
        }
 
 
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            try
            {
                System.Windows.Data.CollectionViewSource categoryViewSource =
                ((System.Windows.Data.CollectionViewSource)(this.FindResource("categoryViewSource")));
 
                _context.Categories.Load();
 
                BindingList<Category> _studBindList = _context.Categories.Local.ToBindingList();
 
                categoryViewSource.Source = _context.Categories.Local;
 
                AddEntity();
                // GetAll();
                string сonnectionStringStartDuplicate = сonnectionStringStart;
                string connectionStringResult1 = _context.Database.Connection.ConnectionString;
                string connectionStringResult2 = _context.ConnectionString_test;
            }
            catch (Exception ex)
            {
                throw;
            }
        }        
 
        public void AddEntity()
        {
            Category category = new Category
            {
                Name = "Name_Category_4"
            };
 
            _context.Categories.Add(category);
            string connectionString_str = _context.Database.Connection.ConnectionString;
            _context.SaveChanges();
        }
 
        public void GetAll()
        {
            _context.Categories.Load();
 
            BindingList<Category> _studBindList = _context.Categories.Local.ToBindingList();
        }
    }
}
Миниатюры
Как определить где находится база данных с которой работает приложение?   Как определить где находится база данных с которой работает приложение?   Как определить где находится база данных с которой работает приложение?  

Как определить где находится база данных с которой работает приложение?  
0
Эксперт .NET
 Аватар для Usaga
14121 / 9338 / 1350
Регистрация: 21.01.2016
Сообщений: 35,079
17.02.2020, 06:47
Лучший ответ Сообщение было отмечено Soft17 как решение

Решение

Цитата Сообщение от Soft17 Посмотреть сообщение
Почему, несмотря на, то, что я передаю строку в которой прописана база данных "NORTHWINDC.MDF", приложение всё равно продолжает работать с "WpfAppFrm.ProductContext"?
Вы её никуда не передаёте.

Её нужно передавать в конструктор DbContext. А вы что делаете?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.02.2020, 06:47
Помогаю со студенческими работами здесь

Поменять местами строку , в которой находится максимальный элемент со строкой, где находится минимальный элемент матрицы
Дана целочисленная матрица А размером N, где N вводится с клавиатуры. Поменять местами строку , в которой находится максимальный элемент со...

Как определить адрес ячейки, в которой находится картинка?
Задача такая: экспортировать все картинки из файла xlsx, который представляет собой каталог запчастей, полученный из PDF при помощи...

Как определить папку, в которой находится ехешник сервиса?
Как определить папку, в которой находится ехешник сервиса? При старте сервиса текущая директория устанавливается в %system32% :(

Как определить номер строки, на которой находится выделенный текст?
Текст выделяется программно так: Memo1.SetFocus(); Memo1.SelStart:=Pos(FIND,Memo1.Lines.Text)-1; Memo1.SelLength:=Length(FIND); ...

приложение(*) где по нажатию кнопки эти файлы распаковывались бы в директорию в которой лежит приложение(*)...
Есть 2 файла 222.pck 5556.dll нужно сделать приложение(*) где по нажатию кнопки эти файлы распаковывались бы в директорию в которой лежит...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru