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

Заполнение TreeView из SQLite

20.09.2020, 01:41. Показов 4811. Ответов 53
Метки нет (Все метки)

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

итак что было сделано и что не получается и или не понимаю :-(

Добавил в проект папки (сильно не пинайте я возможно не очень понимаю методику а следовательно вероятно не верно обозвал папки и классы)

первым делом установил EntityFramework

далее прописал настройки БД в AppConfig

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
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=.\AScripts.db" providerName="System.Data.SQLite" />
  </connectionStrings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" />
  </startup>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
    </providers>
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SQLite.EF6" />
      <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
      <remove invariant="System.Data.SQLite" />
      <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
    </DbProviderFactories>
  </system.data>
</configuration>
далее создал папки
  • Commands
  • Context
  • Control
  • Models
  • View
  • ViewModels

следом создал классы

первым делом создал модель

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
using SQLite.CodeFirst;
using System.Collections.Generic;
 
namespace AS.Models
{
    class ConfigerationPanel
    {
        [Autoincrement]
        public int    Id { get; }
        public string Name { get; }
        public int    IdParent { get; }
        public ConfigerationPanel(int id, string name, int idParent = 0)
        {
            Id       = id;
            Name     = name;
            IdParent = idParent;
        }
 
        public class IdEqualityComparer : IEqualityComparer<ConfigerationPanel>
        {
            public bool Equals(ConfigerationPanel x, ConfigerationPanel y)
                => x.Id.Equals(y.Id);
 
            public int GetHashCode(ConfigerationPanel obj)
                => obj.GetHashCode();
        }
    }
}
далее Context

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
77
78
79
80
using AS.Models;
using SQLite.CodeFirst;
using System.Data.Entity;
 
namespace AS.Context
{
    class CPContext : DbContext
    {
        public DbSet<ConfigerationPanel> ConfigerationPanels { get; set; }
        public CPContext() : base("DefaultConnection") { }
 
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
 
            var sqliteInitializer = new SqliteCreateDatabaseIfNotExists<CPContext>(modelBuilder);
            Database.SetInitializer(sqliteInitializer);
        }
    }
}
 
 
затем  interface
 
using AS.Models;
using System.Collections.Generic;
 
namespace AS.View
{
    interface CPinterface
    {
        string Source { get; }
        void Load(string source);
        HashSet<ConfigerationPanel> GetIdNames();
    }
}
 
далее ViewModels
 
using AS.Context;
using AS.Models;
using AS.View;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
 
namespace AS.ViewModels
{
    class CPVModel : CPinterface
    {
        public string Source { get; private set; }
        public void Load(string source) => Source = source;
        public HashSet<ConfigerationPanel> GetIdNames()
        {
            HashSet<ConfigerationPanel> names = new HashSet<ConfigerationPanel>(new ConfigerationPanel.IdEqualityComparer());
 
            DataSet Dats = new DataSet();
 
            using (var context = new CPContext())
            {
                context.ConfigerationPanels.Load();
 
                var fff = context.ConfigerationPanels.Local;
               
 
 
            }
 
            //foreach (var row in d)
            //    names.Add(new ConfigerationPanel
            //    (
            //          (int)row["Id"],
            //          (string)row["Name"],
            //          (int)row["IdParent"]
            //    ));
 
            return names;
        }
    }
}
теперь не понимаю как Выгрузить данные в DataSet?

пример заполнения TreeView брал отсюда

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

Заполнение ComboBox данными из SQLite
Заполнить ComboBox одним значением из SQLite я могу, но как сделать так, чтобы можно было поместить два значения в одно? var...

Заполнение TreeView
Доброго времени суток уважаемые форумчане у меня есть задача с которой сам справиться не могу и прошу помощи у Вас. У меня есть TreeView...

Заполнение TreeView из XML
Добрый вечер не могу понять, как забиндить TreeView с вот этой https://pogoda.yandex.ru/static/cities.xml XML? Должно получится ...

53
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
22.09.2020, 12:05  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Так как у нас WPF MVVM + БД задача, то сначала мы реализуем Репозиторий для работы с источником Данных.
В данном случае БД.
Для Репа Данных у нас будет ОТДЕЛЬНЫЙ проект в котором пока только есть подключение к БД и типы CPContext и Nomenclatura.
Оба типа include (внутренние) и видны только в этой сборке.
Для того чтобы мы могли из других сборок "общаться" с Репом надо задать интерфейс для общения и типы данных для обмена.
Типы данных - это будут иммутабельные DTO типы.
Создаются они в отдельном проекте-библиотеке.
Остальные подробности - позже.
ничего не понял (много срашных букв )

от меня что требудется сейчас реализовать методы работы с бд и описать в нем модели ?

перевести проект в длл?

тоесть сделать его подрубаемым для работы с бд?

Добавлено через 8 минут
Цитата Сообщение от Sanya2019 Посмотреть сообщение
от меня что требудется сейчас реализовать методы работы с бд и описать в нем модели ?
но тут проблема модель данных зависит от того можно ли как то treeview хранить данные так что бы потом поднимать их без рекурсии )

если нет то я буду щас писать

но если да тогда какова будет структура таблиц бд?

я предстовлял себе следующую структуру БД (но это если с рекурсией)

Таблица Узлов БД (Элементов тех самых документов, журнало, и т. д....)

Таблица справочников настройки данных справочников

Таблица элементов справочников где описаны свойств аданных элементов (ссылаются на таблицу справочников)

Таблица документов где описаны документы

таблица элементов документа (хотя можно сделать только одну таблицу для всех обектов их элементов)

и т .д

далее для заполнения treeview мы поднимаем данные первог оуровня а затем вторые и следующие уровни из соседних таблиц

где то так

Добавлено через 4 минуты
и еще вопрос какой тип данных должна возвращать библа БД? при обращениие к ней

я же верно понимаю должно быть что то типа следующее

C#
1
2
3
4
5
6
Функция ПолучитьДеревоКонфиги(Можно еще и так "Тип данных")
{
Бла бла бла работаем  сбазой 
 
Вернуть Тип данных
}
что то типа такого должно быть?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
22.09.2020, 12:19
Цитата Сообщение от Sanya2019 Посмотреть сообщение
от меня что требудется сейчас реализовать методы работы с бд и описать в нем модели ?
Пока, чтобы не потерять уже сделанное вами, добавьте в Решение два проекта.
Один для Репа. В нём подключите SQLite и перенесите в него CPContext и Nomenclatura.
Второй назовите Common - это будет библиотека общих типов.
В ней мы объявим DTO типы и интерфейсы.

Добавлено через 11 минут
Sanya2019, блин!
И давайте сразу договоримся: "Русский только в GUI! Все имена в коде должны соблюдать Правила Именования!"
Цитата Сообщение от Sanya2019 Посмотреть сообщение
и еще вопрос какой тип данных должна возвращать библа БД? при обращениие к ней
Иммутабельный DTO тип.
Если коллекция, то иммутабельная коллекция.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
22.09.2020, 17:00  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Один для Репа. В нём подключите SQLite и перенесите в него CPContext и Nomenclatura.
библиотеку?

или WPF?

C#?

Добавлено через 9 минут
создал баблиотеку

добавил классы

Добавлено через 1 час 31 минуту
что то не хочет с библиотекой работать EF

Добавлено через 18 секунд
матюгается (

System.InvalidOperationException: "The Entity Framework provider type 'System.Data.SQLite.EF6.SQLiteProviderSe rvices, System.Data.SQLite.EF6' registered in the application config file for the ADO.NET provider with invariant name 'System.Data.SQLite' could not be loaded. Make sure that the assembly-qualified name is used and that the assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information."

Добавлено через 22 минуты
как не крутил ее ничего не выходит (

Добавлено через 3 минуты
если запускать его ка отдельный проект то все работает не работает видимо когда юзаем его как подключаемую ссылку он не использует файл настроект App.config

Добавлено через 6 минут
в общем SQLite.CodeFirst так не умеет работать как я понимаю (

Добавлено через 2 часа 15 минут
https://www.cyberforum.ru/ado-... 53619.html

печальная инфа для меня (

выходит придется обходиться без EF (
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
22.09.2020, 19:31
Sanya2019,у SQLite есть проблемы с подтягиванием зависимостей.
Сам с этим сталкивался.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
22.09.2020, 19:33  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
,у SQLite есть проблемы с подтягиванием зависимостей.
Сам с этим сталкивался.
писать свою ORM?

или обойдемся обычными запросами?

блин но как бы хотелось EF (
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
22.09.2020, 19:37
Sanya2019, Nomenclatura что хранит?

Добавлено через 1 минуту
Цитата Сообщение от Sanya2019 Посмотреть сообщение
блин но как бы хотелось EF (
Неее - будем делать на EF.
Просто в проектах придётся явно устанавливать зависимые сборки.

Добавлено через 1 минуту
TreeView - это дерево.
Дерево состоит из узлов.
Причем здесь Nomenclatura ?
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
22.09.2020, 19:57  [ТС]
там больше нет Nomenclatura это я брал классы работы с бд из учебного своего другого проекта

Добавлено через 50 секунд
Configerationpanel
Цитата Сообщение от Элд Хасп Посмотреть сообщение
TreeView - это дерево.
Добавлено через 1 минуту
C#
1
2
3
4
5
6
7
8
9
    public class Configerationpanel
    {
        [Autoincrement]
        public int Id { get; set; }
        public string Name { get; set; }
 
        public string ParentId { get; set; }
 
    }
Добавлено через 40 секунд
вот новая

Вы выдели мое сообщение я создал другой проект так как тот не хотел обновлять (

я Выслал Вам приглашение

Добавлено через 13 минут
нашел у себя проект где работа с бд из другого класса производится щас подниму там все работает

щас короче сделаю )
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
22.09.2020, 20:12
TreeView - это дерево.
Дерево состоит из узлов.
Причем здесь Nomenclatura ?
Цитата Сообщение от Sanya2019 Посмотреть сообщение
Вы выдели мое сообщение я создал другой проект так как тот не хотел обновлять (
я Выслал Вам приглашение
Сейчас посмотрю.
Не надо делать новые проекты.

В одном Репе может быть несколько Решений.
А в одном решении несколько проектов.

Остановимся на каком-то дном Репе.
На новом?

Добавлено через 11 минут
Цитата Сообщение от Sanya2019 Посмотреть сообщение
я создал другой проект
У вас неправильно выбраны типы проектов.

репозиторий и common - должны быть "Библиотека Framework"
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
22.09.2020, 20:13  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Остановимся на каком-то дном Репе.
На новом?
на новом
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
22.09.2020, 20:14
Цитата Сообщение от Sanya2019 Посмотреть сообщение
Configerationpanel
Здесь имена на инглишь.
В Репе на русском...
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
22.09.2020, 20:30  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
У вас неправильно выбраны типы проектов.
репозиторий и common - должны быть "Библиотека Framework"

были изночально но появились проблемы с EF я подумал что нужно в приложение сделать и там не работало ))

могу сделать библиотеки

Добавлено через 53 секунды
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Здесь имена на инглишь.
В Репе на русском...

странно

синхронизировался давно (

Добавлено через 2 минуты
воот щас синхронизировалось

Добавлено через 8 минут
не понимаю в чем проблема сделал точно так же как в другом проекте

но получаю ту же ошибку (

Добавлено через 4 минуты
подключил класс с контекстом и моделью который рабочий и та же ошибка (

что это?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
22.09.2020, 20:34
Цитата Сообщение от Sanya2019 Посмотреть сообщение
воот щас синхронизировалось
Поймал.

Сразу замечанию.

Слова внутри имени обозначаются большой буквой.
Не Configerationpanel, а ConfigerationPanel.

Ключевою поле в EF должно иметь атрибут (если не путаю) [Key]

Снабжайте типы и их члены тегами XML документации.
Пример:
C#
6
7
8
9
10
11
12
13
14
15
16
17
    /// <summary>Тип для хранения данных одного узла каталога такого-то.</summary>
    public class ConfigerationPanel
    {
        /// <summary>Уникальный идентификатор.</summary>
        [Autoincrement]
        [Key]
        public int Id { get; set; }
        /// <summary>Наименование.</summary>
        public string Title { get; set; }
        /// <summary>Идентификатор родительского узла.</summary>
        public string ParentId { get; set; }
    }
Добавлено через 43 секунды
Sanya2019, на личку ответьте.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 2
22.09.2020, 20:37
Sanya2019, в пространстве System.ComponentModel.DataAnnotations есть много атрибутов для EF.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
22.09.2020, 21:05  [ТС]
у меня уже крыша съезжает (

не хочет он работать я в конец запутался )

Добавлено через 42 секунды
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Ключевою поле в EF должно иметь атрибут (если не путаю) [Key]
да как бэ.... не обязательно

Добавлено через 50 секунд
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Не Configerationpanel, а ConfigerationPanel.
это когда писал изночально было ка кнадо но EF ругался и я изменил

щас в общем переделаю

Добавлено через 21 минуту
в общем все исправил но с базой не выходит подружить (
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.09.2020, 21:05

(Silverligth) Заполнение TreeView XML-данными
Доброго времени суток. Подскажите, каким образом можно этого добиться ? XElement xe = XElement.Load(&quot;file.xml&quot;); Что...

Вывод элементов TreeView из SQLite
Как вывести подэлементы &quot;Тест1&quot;, &quot;Тест2&quot;, &quot;Тест3&quot;, &quot;Тест4&quot; в один элимент &quot;Работающие&quot; а не так как у меня получилось на скрине? ...

заполнение базы sqlite
есть фрагмент кода connection.Open(); SQLiteCommand comm = new SQLiteCommand(&quot;INSERT INTO 'example' ('id', 'value')...

Заполнение данных в SQLite
Приветствую, ребята! Пытаюсь записать в БД данные: string sql_command = &quot;INSERT INTO MainDataTable('Serial','RandomValue')...

Заполнение DataGridView с SQLite БД
Здравствуйте! Есть sqlite БД. На мэйн форме есть DataGridview1, один текстбокс и одна кнопка. Информация добавляется успешно но она не...


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

Или воспользуйтесь поиском по форуму:
54
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru