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

Не сохраняет list SQLite

17.06.2022, 19:03. Показов 565. Ответов 3

Студворк — интернет-сервис помощи студентам
Есть модели объектов которые хранятся в БД.

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
public class Person
    {
        [PrimaryKey, AutoIncrement,NotNull]
        public int Id { get; set; }
        [NotNull]
        public string Fullname { get; set; }
        [ForeignKey(typeof(Job))]
        public int Idjob { get; set; }
 
        [ManyToOne(CascadeOperations = CascadeOperation.CascadeRead)]
        public Job Jobb { get; set; }
 
        public string job
        {
            get
            {
                string s = App.HRDB.GetJobAsync().Result.ToArray().Where(p => p.Id == Idjob).FirstOrDefault().Name;
                if (s == "")
                    return "";
                return s;
            }
        }
    }
 
public class Job
    {
        [PrimaryKey, AutoIncrement]
        public int Id { get; set; }
        public string Name { get; set; }
        public int CountPlace { get; set; }
 
        [OneToMany(CascadeOperations = CascadeOperation.CascadeDelete)]
        public List<Person> people { get; set; }
    }
При сохранении нового сотрудника по профессии я добавляю его в лист работы и вызываю метод сохранения работы:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private async void Save_Clicked(object sender, EventArgs e)
        {
            Person person = (Person)BindingContext;
            if (person == null)
                person = new Person() { Fullname = Fullname.Text };
            Job job = jobs.Where(p => p.Name == CB.Items[CB.SelectedIndex]).FirstOrDefault();
            person.Idjob = job.Id;
            person.Jobb = job;
            if (job.people == null)
                job.people = new List<Person>();
            job.people.Add(person);
 
            if (!string.IsNullOrWhiteSpace(person.Fullname) && !string.IsNullOrWhiteSpace(person.Idjob.ToString()))
            {
                await App.HRDB.SavePersonAsync(person);
                await App.HRDB.SaveJobAsync(job);
            }
            //Две точки что бы назад вернуться
            await Shell.Current.GoToAsync("..");
        }
Метод сохранения:

C#
1
2
3
4
5
6
        public Task<int> SaveJobAsync(Job job)
        {
            if (job.Id == 0)
                return db.InsertAsync(job);
            return db.UpdateAsync(job);
        }
Но при последующей подгрузке значений лист сотрудников профессии равен null
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.06.2022, 19:03
Ответы с готовыми решениями:

List View и Sqlite
День добрый! Есть простой вопрос, можно ли в List View вывести данные из таблицы Sqlite или нужно брать только table view

Не сохраняет в sharedReferences из List
Заранее благодарен. Есть MainActivity(первое) и LanguageActivity(второе). В первом активити есть два поля куда нужно вставлять значение...

Загрузить в List T из SQLite для DataGrid
Здравствуйте. Прошу помощи в решении задачи загрузки в List T который является коллекцией DataGrid из SQLite. &lt;TextBox...

3
0 / 0 / 0
Регистрация: 13.06.2021
Сообщений: 6
17.06.2022, 19:06  [ТС]
Вот скрины
Миниатюры
Не сохраняет list SQLite   Не сохраняет list SQLite  
0
0 / 0 / 0
Регистрация: 13.06.2021
Сообщений: 6
17.06.2022, 19:20  [ТС]
Два одинаковый случайно кинул вот с нулем при чтении с бд
Миниатюры
Не сохраняет list SQLite  
0
HF
 Аватар для HF
1317 / 896 / 200
Регистрация: 09.09.2011
Сообщений: 2,692
Записей в блоге: 2
23.06.2022, 10:40
Цитата Сообщение от Ebola_ Посмотреть сообщение
Но при последующей подгрузке значений лист сотрудников профессии равен null
В методе GetJobAsync не хватает (нет кода, пишу теорию) команды Include для таблицы Jobs.

Цитата Сообщение от Ebola_ Посмотреть сообщение
C#
1
2
if (job.Id == 0)
                return db.InsertAsync(job);
Не надо так делать.
- если появилась новая "Работа", то EF сам её создаст, исходя из данных в "Персоне"
- если записываете Персону или сменили работу, то... он всегда будет добавлять в базу новую Работу?

Цитата Сообщение от Ebola_ Посмотреть сообщение
person.Idjob = job.Id;
person.Jobb = job;
if (job.people == null)
job.people = new List<Person>();
job.people.Add(person);
Тут вообще страшно. Запомните - EF сам, очень хорошо понимает что и где появилось и где нужно что создать. Не надо заполнять виртуальные коллекции.
Не надо делать вторую строчку. Существует какая-то работа, вы просто присоединяетесь к ней - достаточно сменить IdJob у Персоны.
Вообщем много избыточных действий.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.06.2022, 10:40
Помогаю со студенческими работами здесь

Магнитола не сохраняет последний воспроизведённый файл (с флешки), а позицию сохраняет
Во общем в машине есть магнитола JVC, в ней есть CD диск, USB flash накопитель и радио... Так вот: если на флешке будет играть музыка то...

Конвертировать один элемент из List<List<Class>> в list и string
Как можно перевести один выбранный элемент из List&lt;List&lt;Data&gt;&gt; myList в list и string? Например, myList. Сейчас я могу с помощью...

Linq преобразование List<List<double>> в List<Array>
Доброго времени суток, данный код нужно преобразовать linq выражениями и дописать выборку из List&lt;List&lt;double&gt;&gt;. Таким...

Определить предикат Р(List,Х) который истинен если Х состоит из пар элементов списка List,сумма которых больше половины элементов List
Помогите пожалуйста написать программу,буду очень благодарен,заранее спасибо! Определить предикат Р(List,Х) который истинен если Х...

Code First - выбор: Microsoft.EntityFrameworkCore.Sqlite, Microsoft.Data.Sqlite, System.Data.SQLite и др.
Работаю с БД очень редко. Поэтому опыт маленький и знания обрывочные. Стоит задача в Решении Framework 4.8 создать репозиторий на...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru