Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/27: Рейтинг темы: голосов - 27, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 04.05.2021
Сообщений: 156

Как обнулить значения TextBox в команде после сохранения их в БД

21.03.2023, 15:34. Показов 7395. Ответов 134

Студворк — интернет-сервис помощи студентам
В TextBox я записываю данные которые потом сохраняются в бд, а как обновлять потом ТекстБоксы после добавления в команде, чтобы они обнулялись для добавления новых данных, чтобы пользователю не приходилось их стирать?

RelayCommand

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
using System;
using System.Windows.Input;
 
namespace WarhammerAGM
{
    /*Этот класс реализует интерфейс ICommand, благодаря чему с помощью подобных команды мы сможем направлять вызовы к ViewModel. 
     * Ключевым здесь является метод Execute(), который получает параметр и выполняет действие, переданное через конструктор команды.*/
    public class RelayCommand : ICommand
    {
        Action<object?> execute;
        Func<object?, bool>? canExecute;
 
        public event EventHandler? CanExecuteChanged
        {
            add { CommandManager.RequerySuggested += value; }
            remove { CommandManager.RequerySuggested -= value; }
        }
 
        public RelayCommand(Action<object?> execute, Func<object?, bool>? canExecute = null)
        {
            this.execute = execute;
            this.canExecute = canExecute;
        }
 
        public bool CanExecute(object? parameter)
        {
            return canExecute == null || canExecute(parameter);
        }
 
        public void Execute(object? parameter)
        {
            execute(parameter);
        }
    }
}
ApplicationViewModel

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
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Query.Internal;
using System.Collections.ObjectModel;
using System.Windows.Controls;
using WarhammerAGM.Models;
using Xceed.Wpf.Toolkit;
 
namespace WarhammerAGM
{
    public class ApplicationViewModel
    {
        ApplicationContext db = new ApplicationContext();
        RelayCommand? addCommand;
        RelayCommand? editCommand;
        RelayCommand? deleteCommand;
        public BestiaryCreature BestiaryCreature { get; private set; } = new();
        public ObservableCollection<BestiaryCreature> BestiaryCreatures { get; set; }
        public ApplicationViewModel()
        {
            /*В конструкторе класса загружаем данные из бд в локальный кэш*/
            db.Database.EnsureCreated();
            db.BestiaryCreatures.Load();
            BestiaryCreatures = db.BestiaryCreatures.Local.ToObservableCollection();
        }
 
        // команда добавления
        public RelayCommand AddCommand
        {
            get
            {
                return addCommand ??
                  (addCommand = new RelayCommand((o) =>
                  {
                      BestiaryCreature bestiaryCreature = BestiaryCreature;
                      db.BestiaryCreatures.Add(bestiaryCreature);
                      db.SaveChanges();    
                      MessageBox.Show("Добавление прошло успешно");
                      
                  }));
            }
        }
    }
}
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
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
<Window
        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:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
    xmlns:AttachedBehaviors="clr-namespace:WarhammerAGM.AttachedBehaviors" xmlns:local="clr-namespace:WarhammerAGM"
    x:Class="WarhammerAGM.MainWindow"
    mc:Ignorable="d"
        Title="MainWindow" Height="540" Width="960">
    <Window.DataContext>
        <local:ApplicationViewModel/>
    </Window.DataContext>
 
 
 
    <Grid>
        <TabControl FontSize="36">
            <TabItem Header="TabItem">
                <Grid Background="#FFE5E5E5"/>
            </TabItem>
            <TabItem Header="TabItem">
                <Grid Background="#FFE5E5E5">
                    <TabControl FontSize="22">
                        <TabItem Header="Бестиарий">
                            <Grid Background="#FFE5E5E5">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="*"/>
                                </Grid.ColumnDefinitions>
                                <ListView x:Name="ListViewBestiaryAddEditChange" Grid.Column="0" ItemsSource="{Binding BestiaryCreatures}">
                                    <ListView.ItemTemplate>
                                        <DataTemplate>
                                            <StackPanel>
                                                <TextBlock Text="{Binding Name}" FontSize="16" />
                                            </StackPanel>
                                        </DataTemplate>
                                    </ListView.ItemTemplate>
                                </ListView>
                                <GridSplitter Grid.Column="1" ShowsPreview="False" Width="3" HorizontalAlignment="Center" VerticalAlignment="Stretch" />
                                <Grid Grid.Column="2">
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="*"/>
                                        <RowDefinition Height="Auto"/>
                                    </Grid.RowDefinitions>
                                    <ScrollViewer Grid.Row="0" Background="Gray">
                                        <Grid x:Name="GridStatsEnter" Background="Gray" DataContext="{Binding BestiaryCreature}">
                                            <Grid.RowDefinitions>
                                                <RowDefinition Height="Auto"/>
                                                <RowDefinition Height="Auto"/>
                                                <RowDefinition Height="Auto"/>
                                                <RowDefinition Height="Auto"/>
                                                <RowDefinition Height="Auto"/>
                                            </Grid.RowDefinitions>
                                            <Grid Grid.Row="0">
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="Auto"/>
                                                    <ColumnDefinition Width="*"/>
                                                </Grid.ColumnDefinitions>
                                                <TextBlock Grid.Column="0" Text="Название:" Margin="5"/>
                                                <TextBox Text="{Binding Name}" Grid.Column="1" Margin="5"/>
                                            </Grid>
 
 
                                            <Grid Grid.Row="1" Margin="3">
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="*"/>
                                                    <ColumnDefinition Width="*"/>
                                                    <ColumnDefinition Width="*"/>
                                                    <ColumnDefinition Width="*"/>
                                                    <ColumnDefinition Width="*"/>
                                                    <ColumnDefinition Width="*"/>
                                                    <ColumnDefinition Width="*"/>
                                                    <ColumnDefinition Width="*"/>
                                                    <ColumnDefinition Width="*"/>
                                                </Grid.ColumnDefinitions>
                                                <Grid.RowDefinitions>
                                                    <RowDefinition Height="Auto"/>
                                                    <RowDefinition Height="Auto"/>
                                                    <RowDefinition Height="Auto"/>
                                                </Grid.RowDefinitions>
                                                <TextBlock Grid.Column="0" Grid.Row="1" Text="ББ"/>
                                                <TextBox x:Name="BBStats" Grid.Column="0" Grid.Row="2" Text="{Binding Melee}" MaxLength="3" AttachedBehaviors:TextBoxBehavior.IsInteger="True" />
                                                <TextBlock Grid.Column="1" Grid.Row="1" Text="Б"/>
                                                <TextBox x:Name="BStats" Grid.Column="1" Grid.Row="2" Text="{Binding Ballistics}" AttachedBehaviors:TextBoxBehavior.IsInteger="True"/>
                                                <TextBlock Grid.Column="2" Grid.Row="1" Text="Сил"/>
                                                <TextBox x:Name="PowStats" Grid.Column="2" Grid.Row="2" Text="{Binding Power}" AttachedBehaviors:TextBoxBehavior.IsInteger="True"/>
                                                <TextBlock Grid.Column="3" Grid.Row="1" Text="Вын"/>
                                                <TextBox x:Name="EndurStats" Grid.Column="3" Grid.Row="2" Text="{Binding Endurance}" AttachedBehaviors:TextBoxBehavior.IsInteger="True"/>
                                                <TextBlock Grid.Column="4" Grid.Row="1" Text="Лов"/>
                                                <TextBox x:Name="DexStats" Grid.Column="4" Grid.Row="2" Text="{Binding Dexterity}" AttachedBehaviors:TextBoxBehavior.IsInteger="True"/>
                                                <TextBlock Grid.Column="5" Grid.Row="1" Text="Инт"/>
                                                <TextBox x:Name="IntStats" Grid.Column="5" Grid.Row="2" Text="{Binding Intelligence}" AttachedBehaviors:TextBoxBehavior.IsInteger="True"/>
                                                <TextBlock Grid.Column="6" Grid.Row="1" Text="Вос"/>
                                                <TextBox x:Name="PerStats" Grid.Column="6" Grid.Row="2" Text="{Binding Perception}" AttachedBehaviors:TextBoxBehavior.IsInteger="True"/>
                                                <TextBlock Grid.Column="7" Grid.Row="1" Text="СВ"/>
                                                <TextBox x:Name="WillPowStats" Grid.Column="7" Grid.Row="2" Text="{Binding Willpower}" AttachedBehaviors:TextBoxBehavior.IsInteger="True"/>
                                                <TextBlock Grid.Column="8" Grid.Row="1" Text="Тов"/>
                                                <TextBox x:Name="PartStats" Grid.Column="8" Grid.Row="2" Text="{Binding Partnership}" AttachedBehaviors:TextBoxBehavior.IsInteger="True"/>
                                            </Grid>
 
 
                                            <Grid Grid.Row="2">
 
                                                <Grid.RowDefinitions>
                                                    <RowDefinition Height="Auto"/>
                                                    <RowDefinition Height="Auto"/>
                                                </Grid.RowDefinitions>
 
                                                <Grid.ColumnDefinitions>
                                                    <ColumnDefinition Width="Auto"/>
                                                    <ColumnDefinition Width="50"/>
                                                    <ColumnDefinition Width="Auto"/>
                                                    <ColumnDefinition Width="Auto"/>
                                                </Grid.ColumnDefinitions>
 
                                                <TextBlock Grid.Row="0" Grid.Column="0" Text="Раны:" Margin="5"/>
                                                <TextBox Text="{Binding Wounds}" Grid.Row="0" Grid.Column="1" Margin="5"/>
                                                <TextBlock Grid.Row="0" Grid.Column="2" Text="Скорость:" Margin="5"/>
                                                <xctk:MaskedTextBox Grid.Row="0" Grid.Column="3" Text="{Binding Speed}" Mask="00/00/00/00"/>
 
                                            </Grid>
 
 
                                            <Grid Grid.Row="3">
                                                <Grid.RowDefinitions>
                                                    <RowDefinition Height="Auto"/>
                                                    <RowDefinition Height="Auto"/>
                                                    <RowDefinition Height="Auto"/>
                                                    <RowDefinition Height="Auto"/>
                                                    <RowDefinition Height="Auto"/>
                                                    <RowDefinition Height="Auto"/>
                                                    <RowDefinition Height="Auto"/>
                                                </Grid.RowDefinitions>
                                                <Expander Grid.Row="0" Margin="5" Header="Описание" FontSize="16" Padding="5" BorderBrush="LightBlue" BorderThickness="2">
                                                    <Grid>
                                                        <TextBox FontSize="14" Text="{Binding Description}" TextWrapping="Wrap" AcceptsReturn="True" AcceptsTab="True" VerticalScrollBarVisibility="Auto" MinHeight="100"/>
                                                    </Grid>
                                                </Expander>
                                                <Expander Grid.Row="1" Margin="5" Header="Умения" FontSize="16" Padding="5" BorderBrush="LightBlue" BorderThickness="2">
                                                    <Grid>
                                                        <TextBox Text="{Binding Skills}" TextWrapping="Wrap" AcceptsReturn="True" AcceptsTab="True" VerticalScrollBarVisibility="Auto" MinHeight="100"/>
                                                    </Grid>
                                                </Expander>
                                                <Expander Grid.Row="2" Margin="5" Header="Таланты" FontSize="16" Padding="5" BorderBrush="LightBlue" BorderThickness="2">
                                                    <Grid>
                                                        <TextBox Text="{Binding Talents}" TextWrapping="Wrap" AcceptsReturn="True" AcceptsTab="True" VerticalScrollBarVisibility="Auto" MinHeight="100"/>
                                                    </Grid>
                                                </Expander>
                                                <Expander Grid.Row="3" Margin="5" Header="Броня и Оружие" FontSize="16" Padding="5" BorderBrush="LightBlue" BorderThickness="2">
                                                    <Grid>
                                                        <Grid.RowDefinitions>
                                                            <RowDefinition Height="Auto"/>
                                                            <RowDefinition Height="Auto"/>
                                                            <RowDefinition Height="Auto"/>
                                                            <RowDefinition Height="Auto"/>
                                                        </Grid.RowDefinitions>
                                                        <TextBlock Grid.Row="0" Text="Броня" FontSize="14"/>
                                                        <TextBox Grid.Row="1" Text="{Binding Armor}" TextWrapping="Wrap" AcceptsReturn="True" AcceptsTab="True" VerticalScrollBarVisibility="Auto" MinHeight="50"/>
                                                        <TextBlock Grid.Row="2" Text="Оружие" FontSize="14"/>
                                                        <TextBox Grid.Row="3" Text="{Binding Weapons}" TextWrapping="Wrap" AcceptsReturn="True" AcceptsTab="True" VerticalScrollBarVisibility="Auto" MinHeight="50"/>
                                                    </Grid>
                                                </Expander>
                                                <Expander Grid.Row="4" Margin="5" Header="Оборудование" FontSize="16" Padding="5" BorderBrush="LightBlue" BorderThickness="2">
                                                    <Grid>
                                                        <TextBox Text="{Binding Equipment}" TextWrapping="Wrap" AcceptsReturn="True" AcceptsTab="True" VerticalScrollBarVisibility="Auto" MinHeight="100"/>
                                                    </Grid>
                                                </Expander>
                                                <Expander Grid.Row="5" Margin="5" Header="Особенности" FontSize="16" Padding="5" BorderBrush="LightBlue" BorderThickness="2">
                                                    <Grid>
                                                        <TextBox Text="{Binding Features}" TextWrapping="Wrap" AcceptsReturn="True" AcceptsTab="True" VerticalScrollBarVisibility="Auto" MinHeight="100"/>
                                                    </Grid>
                                                </Expander>
                                                <Expander Grid.Row="6" Margin="5" Header="Дополнительнрые особенности" FontSize="16" Padding="5" BorderBrush="LightBlue" BorderThickness="2">
                                                    <Grid>
                                                        <TextBox Text="{Binding AdditionalFeatures}" TextWrapping="Wrap" AcceptsReturn="True" AcceptsTab="True" VerticalScrollBarVisibility="Auto" MinHeight="100"/>
                                                    </Grid>
                                                </Expander>
                                            </Grid>
                                        </Grid>
                                    </ScrollViewer>
                                    <Grid Grid.Row="1">
                                        <Grid>
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="*"/>
                                                <ColumnDefinition Width="*"/>
                                                <ColumnDefinition Width="*"/>
                                            </Grid.ColumnDefinitions>
                                            <Button Grid.Column="0" Content="Добавить" Margin="1" Command="{Binding AddCommand}"/>
                                            <Button Grid.Column="1" Content="Изменить" Margin="1" Command="{Binding EditCommand}" CommandParameter="{Binding ElementName=ListViewBestiaryAddEditChange, Path=SelectedItem}"  />
                                            <Button Grid.Column="2" Content="Удалить" Margin="1" Command="{Binding DeleteCommand}" CommandParameter="{Binding ElementName=ListViewBestiaryAddEditChange, Path=SelectedItem}"  />
                                        </Grid>
                                    </Grid>
                                </Grid>
                            </Grid>
</Window>
Миниатюры
Как обнулить значения TextBox в команде после сохранения их в БД   Как обнулить значения TextBox в команде после сохранения их в БД  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.03.2023, 15:34
Ответы с готовыми решениями:

Как после выполнения процедуры, обнулить значения Request-a?
Ситуация следующая: при передачи значений формы POST методом, по значению поля определяется процедура формирования данных в таблице....

Как обнулить значение textbox?
Вводишь год - нажимаешь кнопочку - получаешь ответ Когда хочешь ввести новое значение, ответ в текстовом боксе не убирается до нажатия...

Сохранения значения slect после обновления страницы
Доброго время суток всем! Сразу хочу сказать что в яве я особо не рулю. На каком-то форуме нашел подходящий скрипт и попробывал его...

134
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
27.04.2023, 22:22
Студворк — интернет-сервис помощи студентам
VeronikaKlever, очень загружен по работе.
Вчера совсем не было времени, может сегодня смотрю посмотреть. Но не обещаю.

Добавлено через 3 часа 53 минуты
Цитата Сообщение от VeronikaKlever Посмотреть сообщение
Создала в итоге аналог BestiaryCreature
Не понял этого:
C#
10
11
12
13
14
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) //Чтобы задать файл данных SQLite, в этом примере используется переопределение OnConfiguring.
        {
            optionsBuilder.UseSqlite("Data Source=Bestiary.db");
            optionsBuilder.UseSqlite("Data Source=Character.db");
        }
Это случайность? Или вы на самом деле, что можно задать в один контекст сразу две БД?
0
1 / 1 / 0
Регистрация: 04.05.2021
Сообщений: 156
27.04.2023, 22:32  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Это случайность?
Да, я просто уже не знала как подключить правильно вторую таблицу и случайно в фиксацию вошло

Добавлено через 4 минуты
еще вопрос как лучше делать, чтобы было подключено несколько бд (если это возможно) к проекту или все хранилось в одной бд в разных таблицах?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
27.04.2023, 22:39
Цитата Сообщение от VeronikaKlever Посмотреть сообщение
еще вопрос как лучше делать, чтобы было подключено несколько бд (если это возможно) к проекту или все хранилось в одной бд в разных таблицах?
Зависит от ТЗ.
Обычно делается одна БД.
Скажем даже так, реализация с разными БД - это крайне редкая, уникальная задача.

Добавлено через 1 минуту
Цитата Сообщение от VeronikaKlever Посмотреть сообщение
Да, я просто уже не знала как подключить правильно вторую таблицу и случайно в фиксацию вошло
Делаются или разные Контексты. Или вы параметре конструктора передаётся какой должен быть источник.

Добавлено через 52 секунды
Цитата Сообщение от VeronikaKlever Посмотреть сообщение
Создала в итоге аналог BestiaryCreature
Но возникли проблемы с добавлением в Character и всеми остальными функциями
Совершенно не понял зачем вам Character.
0
1 / 1 / 0
Регистрация: 04.05.2021
Сообщений: 156
28.04.2023, 12:52  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Или вы параметре конструктора передаётся какой должен быть источник
Как это должно выглядеть?
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Совершенно не понял зачем вам Character.
Я пока что ее не изменяла. Пока что просто пытаюсь разобраться с подключением таблиц. У меня в проекте их должно быть достаточно много просто, а я вторую не понимаю как подключить
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
28.04.2023, 12:59
Цитата Сообщение от VeronikaKlever Посмотреть сообщение
Как это должно выглядеть?
Сначала определитесь нужно ли вам это.
Зачем вам две ОДИНАКОВЫЕ (по структуре) БД?
0
 Аватар для Andrey-MSK
3390 / 2276 / 388
Регистрация: 14.08.2018
Сообщений: 7,696
Записей в блоге: 4
28.04.2023, 12:59
Цитата Сообщение от VeronikaKlever Посмотреть сообщение
У меня в проекте их должно быть достаточно много просто, а я вторую не понимаю как подключить
В одной БД может быть 100500 таблиц со всеми связями, триггерами, хранимками, функциями и т.д.
Или вы хотели для каждой таблицы делать свою БД?
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
28.04.2023, 13:03
VeronikaKlever, Реализация очень проста:
C#
1
2
3
private readonly string source;
public ApplicationContext(string source)
    => this.source = source;
C#
1
2
3
4
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlite($"Data Source={source}");
        }
0
1 / 1 / 0
Регистрация: 04.05.2021
Сообщений: 156
28.04.2023, 13:25  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Зачем вам две ОДИНАКОВЫЕ (по структуре) БД?
Они одинаковые, но с Character будут проходить другие действия и BestiaryCreature в этом никак не должна быть замешана.
И Character в ближайшем будущем будет немного изменен

Добавлено через 1 минуту
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
Или вы хотели для каждой таблицы делать свою БД?
Как я поняла такое редко делается и чаще все хранится в одной БД в разных таблицах
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
28.04.2023, 13:38
Цитата Сообщение от VeronikaKlever Посмотреть сообщение
Они одинаковые, но с Character будут проходить другие действия и BestiaryCreature в этом никак не должна быть замешана.
И Character в ближайшем будущем будет немного изменен
Вы пишите о ТАБЛИЦАХ и их записях.
А я у вас интересуюсь о БД и их контексте.

Из вашего кода следует, что Bestiary.db и Character.db - одинаковы по СРУКТУРЕ. То есть в обоих в них будут по две таблицы BestiaryCreatures и Characters.
Вам действительно такое нужно?

Добавлено через 5 минут
Цитата Сообщение от VeronikaKlever Посмотреть сообщение
Как я поняла такое редко делается и чаще все хранится в одной БД в разных таблицах
"Для каждой таблицы своя БД" - какие-то исключительные, редкие задачи. На практике лично я с таким не сталкивался.
"Подключение разных БД" (то есть изменение источника) - редко, но встречается. Самый типовой пример - это указание БД или строки подключения в настройках приложения. И потом его изменение в ходе использования приложения.
0
 Аватар для Andrey-MSK
3390 / 2276 / 388
Регистрация: 14.08.2018
Сообщений: 7,696
Записей в блоге: 4
28.04.2023, 13:38
Цитата Сообщение от VeronikaKlever Посмотреть сообщение
Они одинаковые, но с Character будут проходить другие действия и BestiaryCreature в этом никак не должна быть замешана.
И Character в ближайшем будущем будет немного изменен
Зачем такое? Одна БД - 2 таблицы. Каждая со своей структурой и абсолютно не зависимые друг от друга. В приложении просто две сущности для этих таблиц, тоже абсолютно автономные.

И очень похоже на то, что вы не очень хорошо понимаете что такое реляционная СУБД...
1
1 / 1 / 0
Регистрация: 04.05.2021
Сообщений: 156
28.04.2023, 13:45  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Вам действительно такое нужно?
Нет. Я сейчас сделала одну БД с двумя таблицами. Скинула фиксацию. Но вот чего не понимаю, раньше не работало, а сейчас все хорошо
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
28.04.2023, 13:52
Цитата Сообщение от VeronikaKlever Посмотреть сообщение
Они одинаковые, но с Character будут проходить другие ....
И Character в ближайшем будущем будет немного изменен
Вообще, не советую использовать в одном контексте одновременно сущность и базовый класс для неё. Это "дорога к багам".
Например, в вашем коде вполне может случайно пересечься что-то типа такого:
C#
1
2
3
4
5
6
// Где-то в коде какого-то метода
BestiaryCreature bc = Characters[1]; 
 
// В другом месте добавляем bc думая что он BestiaryCreature.
// Но в действительности он типа Character.
BestiaryCreatures.Add(bc);
Если нужно избежать дублирования кода, то надо сделать общий базовый класс, но который сам не будет использоваться в контексте:
C#
1
2
3
4
public class SomeBase
{
    // Здесь все свойства
}
Два прокси, которые будут использоваться в контексте:
C#
1
2
public class BestiaryCreature : SomeBase {}
public class Character : SomeBase {}
Добавлено через 3 минуты
Цитата Сообщение от VeronikaKlever Посмотреть сообщение
Но вот чего не понимаю, раньше не работало, а сейчас все хорошо
Чисто магия !!!
0
1 / 1 / 0
Регистрация: 04.05.2021
Сообщений: 156
28.04.2023, 13:59  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Чисто магия
А магию как-то можно объяснить?) Я просто правда не поняла почему заработало
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Два прокси, которые будут использоваться в контексте:
Не совсем поняла, если сделать базовый класс и потом наследовать
Цитата Сообщение от Элд Хасп Посмотреть сообщение
public class BestiaryCreature : SomeBase {}
public class Character : SomeBase {}
Разве нельзя столкнуться с этой же проблемой?
Цитата Сообщение от Элд Хасп Посмотреть сообщение
// Где-то в коде какого-то метода
BestiaryCreature bc = Characters[1];
// В другом месте добавляем bc думая что он BestiaryCreature.
// Но в действительности он типа Character.
BestiaryCreatures.Add(bc);
0
 Аватар для Andrey-MSK
3390 / 2276 / 388
Регистрация: 14.08.2018
Сообщений: 7,696
Записей в блоге: 4
28.04.2023, 14:04
VeronikaKlever, Вот кусочек моей БД, примерно 1/8 её часть, и это если не учитывать хранимые процедуры, функции, представления и т.д.
0
 Аватар для Andrey-MSK
3390 / 2276 / 388
Регистрация: 14.08.2018
Сообщений: 7,696
Записей в блоге: 4
28.04.2023, 14:06
VeronikaKlever, И классы данных под эти таблицы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.04.2023, 14:06

Идеи для создания валидации кода в команде, сохранения стандартов
Добрый день дорогие коллеги. Появился такой вопрос решил тут спросить, очень надеюсь на ваши ответы. Есть небольшая команда разработчков...

Отобразить текст в Textbox из другого TextBox в разных кодировках без сохранения в файл
Доброго всем времени суток! Есть на форме несколько Textbox&quot;сов. В 1-й Textbox вписывается текст как образец, а в остальных этот же...

После нажатия кнопки "остановить" не получается обнулить значения
Здравстуйте! Делали курсовик с другом и столкнулись с одной проблемой, мы после нажатия кнопки &quot;остановить&quot; не можем обнулить...

Visual Studio Code Есть ли поддержка сохранения файла в 2х местах или запуска батника после сохранения
Здравствуйте. Кто знает есть ли в Visual Studio Code возможность сохранять файцл в 2х местах или запускать определенный батник после...

TextBox color - Как окрасить на форме TextBox от разного значения
Всем привет У меня вопрос по VB. На форме много TextBox и окрашивать их по индивидуальному значению получается достаточно громоздкий код....


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

Или воспользуйтесь поиском по форуму:
135
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru