powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF и несколько одинаковых таблиц
13 сообщений из 13, страница 1 из 1
EF и несколько одинаковых таблиц
    #39393401
Qwe.Qwe1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть у меня в БД несколько одинаковых таблиц-справочников (ID, Name). Основное приложение в меню имеет пункты: "Редактировать справочник 1", 2, 3 и т.д., из которых должно открываться окно с ListView для просмотра, редактирования справочников.
Вот так выглядит команда для одного из пунктов меню:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public void ShowDic1Window(object obj)
{
var vm = new DictionaryViewModel();
// ??? указать vm с какими данными будет работа
var window = new DictionaryWindow(vm);
window.ShowDialog();
}

public void ShowDic2Window(object obj)
{
}


Как указать вью-модели данные, с которыми будет идти работа?

Если "vm.Data = dbContext.Dic1.Local", то как указать тип во вью-модели? Ведь "public List<object> Data" не подойдет, тогда я не смогу добавлять новые элементы в список/коллекцию на подобии Data.Add()...

Пробовал еще так: сделать свой класс MyDic { int ID, string Name } и делать так:
Код: c#
1.
vm.Data = new ObservableCollection<MyDic>(dbContext.Dic1.Select(x => new MyDic() { ID = x.ID, Name = x.Name }));


но как тогда сохранять изменения?
...
Рейтинг: 0 / 0
EF и несколько одинаковых таблиц
    #39393581
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Qwe.Qwe1но как тогда сохранять изменения?

ПолиморфизмЪ
...
Рейтинг: 0 / 0
EF и несколько одинаковых таблиц
    #39393722
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Qwe.Qwe1,

Если у вас несколько однотипных таблиц, то может объединить их в одну ?
На стороне клиента сделать SelectDictionaryQuery и UpdateDictionaryCommand.
...
Рейтинг: 0 / 0
EF и несколько одинаковых таблиц
    #39393743
Qwe.Qwe1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Объединить в одну? Как вариант... А без объединения таки?
...
Рейтинг: 0 / 0
EF и несколько одинаковых таблиц
    #39393890
ntkrnlmp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Qwe.Qwe1,

авторПробовал еще так: сделать свой класс MyDic { int ID, string Name } и делать так:

Да, именно так. Создаете общую модель для всех справочников и с ней работаете.

авторно как тогда сохранять изменения?

Если вы имеете ввиду "в какой справочник сохранять изменения", то:
автор
Код: c#
1.
vm.Data = new ObservableCollection<MyDic>(dbContext.Dic1.Select(x => new MyDic() { ID = x.ID, Name = x.Name }));



Вы же знаете, откуда вы получили данные :) Туда же и сохраняйте.
Сделайте метод SaveToDic1(IEnumerable<MyDic>), SaveToDic2() и т.д.
Либо сохраните любым другим способом контекст (т.е. откуда вы получили данные).

А вообще лучше все в одну таблицу, как вам и советовали ранее.
...
Рейтинг: 0 / 0
EF и несколько одинаковых таблиц
    #39394252
Qwe.Qwe1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я вот так пытаюсь сохранять, но в БД изменений нет...
Код: c#
1.
2.
3.
vm.Data = new ObservableCollection<MyDic>(dbContext.Dic1.Select(x => new MyDic() { ID = x.ID, Name = x.Name }));
vm.Data.Add(new MyDic() { Name = "Test Name" });
dbContext.SaveChanges();
...
Рейтинг: 0 / 0
EF и несколько одинаковых таблиц
    #39394431
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Твой dbContext о vm.Data ничегошеньки не знает, поэтому не может никак сохранить в ней изменения. Для него никаких изменений нет.

Код: c#
1.
2.
dbContext.Dic1.Add(new MyDic() { Name = "Test Name" });
dbContext.SaveChanges();
...
Рейтинг: 0 / 0
EF и несколько одинаковых таблиц
    #39394527
Qwe.Qwe1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну да, логично, а в этом и вопрос весь: во vm.Data я передал справочник, и в vm я хочу сохранять изменения.
Код: c#
1.
vm.Data.Add(new MyDic() { Name = "Test Name" });


- по сути это имитация добавления в справочник новой записи в дочернем окне (vm.Data прибинден к ListView)... Вот как сохранять?
...
Рейтинг: 0 / 0
EF и несколько одинаковых таблиц
    #39394605
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Qwe.Qwe1Ну да, логично, а в этом и вопрос весь: во vm.Data я передал справочник, и в vm я хочу сохранять изменения.
Код: c#
1.
vm.Data.Add(new MyDic() { Name = "Test Name" });


- по сути это имитация добавления в справочник новой записи в дочернем окне (vm.Data прибинден к ListView)... Вот как сохранять?

Тебе надо реализовать паттерн "репозиторий".

P.S. Ты рано взялся за всё это.
...
Рейтинг: 0 / 0
EF и несколько одинаковых таблиц
    #39394795
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Qwe.Qwe1Я вот так пытаюсь сохранять, но в БД изменений нет...
Код: c#
1.
2.
3.
vm.Data = new ObservableCollection<MyDic>(dbContext.Dic1.Select(x => new MyDic() { ID = x.ID, Name = x.Name }));
vm.Data.Add(new MyDic() { Name = "Test Name" });
dbContext.SaveChanges();


Вы точно используете EF ?
...
Рейтинг: 0 / 0
EF и несколько одинаковых таблиц
    #39394939
Qwe.Qwe1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну да )) А что? )
...
Рейтинг: 0 / 0
EF и несколько одинаковых таблиц
    #39394987
ntkrnlmp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Qwe.Qwe1Я вот так пытаюсь сохранять, но в БД изменений нет...
Код: c#
1.
2.
3.
vm.Data = new ObservableCollection<MyDic>(dbContext.Dic1.Select(x => new MyDic() { ID = x.ID, Name = x.Name }));
vm.Data.Add(new MyDic() { Name = "Test Name" });
dbContext.SaveChanges();



Вы создаете коллекцию, в которую потом добавляете элемент. Как коллекция связана с контекстом? Никак:)
Подпишитесь на CollectionChanged и при событии добавления нового объекта добавляйте его в контекст.
...
Рейтинг: 0 / 0
EF и несколько одинаковых таблиц
    #39397463
Qwe.Qwe1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну да, у меня получается новая коллекция, не привязанная к контексту. А зачем мне событие CollectionChanged? Можно как-то сделать, чтобы пользователь из этой новой коллекции наудалял элементов, надобавлял или изменил (переименовал) что-либо, а потом по кнопке Сохранить эта измененная коллекция бы скопом записывалась бы в БД. Ну как-то на подобии:
dbContext.Dic1 = Data; //?
dbContext.SaveChaged();
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF и несколько одинаковых таблиц
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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