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

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

20.09.2020, 01:41. Показов 4832. Ответов 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
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
22.09.2020, 07:11
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Sanya2019 Посмотреть сообщение
В 1с отображается не несколько десятков а тысячи
Не городите ерунду, там ленивая подгрузка, по крайней мере 8.3. Попробуйте в отчет вывести 100кк строк, получите тот же результат - висяки.

Добавлено через 4 минуты
Модель может работать с БД. Через "прослойку" ViewModel гоняются данные из Model во View, ну и обратно.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
22.09.2020, 07:46
Цитата Сообщение от Sanya2019 Посмотреть сообщение
Не могли бы вы на примере моего проекта привести его к структуре
Мог бы.
Для этого мне и надо подключиться к вашему репозиторию, чтобы показывать на вашем коде, не абстрактные примеры.
По репозиторию ответьте в теме Использование GitHub в Студии
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
22.09.2020, 07:53  [ТС]
Не городите ерунду, там ленивая подгрузка, по крайней мере 8.3. Попробуйте в отчет вывести 100кк строк, получите тот же результат - висяки.Откройте операции бух счетов посмотрите сколько там строк

Щас доберусь до офиса приложу видео!
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
22.09.2020, 07:57
Sanya2019, я работал с 1С, знаю про что вы говорите. Кстати, насколько помню, в свойствах динамического списка можно устанавливать количество подгружаемых данных и время их обновления. Это так, к слову.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
22.09.2020, 08:11  [ТС]
Цитата Сообщение от Почтальон Посмотреть сообщение
я работал с 1С, знаю про что вы говорите. Кстати, насколько помню, в свойствах динамического списка можно устанавливать количество подгружаемых данных и время их обновления. Это так, к слову.
а Вы к чему ведете к таму что нету тормозов ? так я такого не говорил!

я писал что она быстрее работает это да!

но фризы то же есть!

на клиент серверном варианте их меньше!

а если верно написать базу данны тогда она вообще летает!

1с 7 хоть и старая так же работает достаточно быстро

но я о том что она да задумывается но не настолько долго

я сгенерил 1 000 000 записей с правочнике в 1С

и в скульной базе

так вот 1С их открыла за менее чем минуту

а приложение за 30 минут это нормлаьно?

вот я и написал что 1С достаточно быстро их открывает

потом

на формах так же открывает их менее чем заминуту но видимо там помогает именно виртуализация

так как если идти отладчиком то данные из бд я получаю за 11 секунд остальное время уходит на рисование!

Добавлено через 2 минуты
честно говоря я не пробовал в 1с отрывать на своем компе )

а тестил на сервере довольно мощном )))

возможно от того нет тормозов щас доберусь попробую открыть локально эти лям записей
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
22.09.2020, 08:19
Никто в здравом уме не грузит столько данных для отображения (зачем ???). Грузят ровно столько, сколько может уместиться на экране. В этом помогает виртуализация. Если нужны данные для расчета, то это одно, если тупо список документов - это другое. И мой вам совет. Если пилите прогу для организации во внутреннее пользование, используйте лучше 1С (БСП).
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
22.09.2020, 08:27  [ТС]
Зачем мне 1с?

Мне надоело она хочу что то свое )

И да это программа для коммерческого использования да она будет наделена бух счетами движениями (логику я уже сделал)

Но она не будет заменой 1с для малых предприятий она в полное подойдёт тем более что я делаю ее больше для того что из нее управлять цмс. Данными сайта так как там я предусмотрел тоже бух счета там есть движения и все очень быстро работает но... Не удобно и я хочу сделать приложение


Но я хочу так же сделать что мое приложение было с конфигуратором что бы любой кто работал с 1с мог ее допиливать
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
22.09.2020, 08:33
Цитата Сообщение от Sanya2019 Посмотреть сообщение
Но я хочу так же сделать что мое приложение было с конфигуратором что бы любой кто работал с 1с мог ее допиливать
Сделайте тогда уж ASP приложение, больше пользы будет. Допиливать ее все-равно никто кроме вас не сможет, т.к. никто не захочет разбираться в г.... коде.
Цитата Сообщение от Sanya2019 Посмотреть сообщение
я делаю ее больше для того что из нее управлять цмс
И базу данных наружу откроете ? Так вам ее быстренько испортят
Цитата Сообщение от Sanya2019 Посмотреть сообщение
Не удобно и я хочу сделать приложение
Делайте на ASP

Добавлено через 1 минуту
Цитата Сообщение от Sanya2019 Посмотреть сообщение
Мне надоело она хочу что то свое )
У меня тоже такое было, но прошло. Сделал вывод - не нужно делать то, что уже есть и хорошо справляется со своими задачами.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
22.09.2020, 08:37  [ТС]
У меня тоже такое было, но прошло. Сделал вывод - не нужно делать то, что уже есть и хорошо справляется со своими задачами.
__________________

Не соглашусь с Вами

Если идти по Вашему тогда не будет новых изобретений!!!


И базу данных наружу откроете ? Так вам ее быстренько испортят

С чего Вы взяли что бд будет наружу смотреть?

В приложении своя бд в сервере своя!


Сделайте тогда уж ASP приложение, больше пользы будет. Допиливать ее все-равно никто кроме вас не сможет, т.к. никто не захочет разбираться в г.... коде.

У меня синтаксис почти полностью идентичен с 1с

Это г.... Код по Вашему?
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
22.09.2020, 08:45
Цитата Сообщение от Sanya2019 Посмотреть сообщение
В приложении своя бд в сервере своя!
Удачи с синхронизацией. Кстати, недавно тут, весной кажется, один чел хотел что-то подобное сделать, но что-то пропал
Цитата Сообщение от Sanya2019 Посмотреть сообщение
У меня синтаксис почти полностью идентичен с 1с
Это г.... Код по Вашему?
Я больше чем уверен, что архитектура приложения оставляет желать лучшего.

Добавлено через 1 минуту
Цитата Сообщение от Sanya2019 Посмотреть сообщение
У меня синтаксис почти полностью идентичен с 1с
И кому нужно будет разбираться в этом синтаксисе ?
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
22.09.2020, 09:02  [ТС]
Ну я не говорил что я ас особенно в шарпе

Но оно работает

Разбираться в синтаксисе когда он идентиче 1с не думаю что составит Каму то труда кто знает 1с



Этот кто то был я и за это время я написал интерпритатор скриптового языка полностью ООП

Все работает очень быстро

Если ставить как веб сервер под Линукс то сайты на нем так же быстро работают как и на пхп

Сравнивать с 1с нет смысла так как у меня нет форм которые я как раз делаю

Единственные сравнения я делал заполняя таблицу значений в 1 идентичная логика выполняется дольше чем в моем интерпритаторе

Добавлено через 1 минуту
Удачи с синхронизацией. Кстати, недавно тут, весной кажется, один чел хотел что-то подобное сделать, но что-то пропал

А в чем вы видите проблемы с синхронизацией?


У меня имеется при на сайте

Обмен реализован след обр


Если есть интернет соединение то сперва данные пишутся на сервере а затем на клиенте

Переодический обмен тоько при проснданиях интернета

Добавлено через 6 минут
А в битрик в связке с 1с тут вы не желаете удачи с синхронизация и?

Или опять велосипед?))
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
22.09.2020, 09:03
Цитата Сообщение от Sanya2019 Посмотреть сообщение
А в чем вы видите проблемы с синхронизацией?
Чтобы у двух пользователей была актуальная информация. Иначе весь смысл использования БД теряется.
Цитата Сообщение от Sanya2019 Посмотреть сообщение
Этот кто то был я и за это время я написал интерпритатор скриптового языка полностью ООП
Желаю вам удачи с вашим проектом. Засим откланиваюсь.
1
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
22.09.2020, 09:05  [ТС]
Чтобы у двух пользователей была актуальная информация. Иначе весь смысл использования БД теряется.

А как по Вашему работают мессенджеры?

Желаю вам удачи с вашим проектом. Засим откланиваюсь. Спасибо
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
22.09.2020, 09:15
Цитата Сообщение от Sanya2019 Посмотреть сообщение
А как по Вашему работают мессенджеры?
Используют микросервисы, балансиры и т.п. архитектурные решения.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
22.09.2020, 09:18  [ТС]
Я не сервисах

Я о механизме

Клиент отсылает сообщение

Сервер его принимает,

Далее сервер через какой либо сервис оповещает других клиентов о том что у него есть что то вкусненькое!
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
22.09.2020, 09:20
удачи
1
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
22.09.2020, 09:50  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Мог бы.
Для этого мне и надо подключиться к вашему репозиторию, чтобы показывать на вашем коде, не абстрактные примеры.
По репозиторию ответьте в теме Использование GitHub в Студии
__________________

что скажете я все не так сделал? )))
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
22.09.2020, 11:10
Цитата Сообщение от Sanya2019 Посмотреть сообщение
Цитата Сообщение от Элд Хасп Посмотреть сообщение
В SQLite?
Точно?
да точно!
Посмотрел Реп и понял почему у вас работает CodeFirst.

Вы установили дополнительный сторонний пакет от Marc Sallin.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
22.09.2020, 11:15  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Посмотрел Реп и понял почему у вас работает CodeFirst.
Вы установили дополнительный сторонний пакет от Marc Sallin.
понятно )

ну как меня учили так и делаю ) но это ж удобно чем базу лепить )
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
22.09.2020, 11:24
Цитата Сообщение от Sanya2019 Посмотреть сообщение
что скажете я все не так сделал? )))
Пока занят, подробнее напишу позже.
Пока могу сказать, что всё неправильно, кроме подключения SQLite, типов CPContext и Nomenclatura.

Мы же будем делать ПРАВИЛЬНУЮ реализацию для того чтобы вы поняли и научились.
Она будет излишне детальной, но по ней будет понятно разделение функционала между слоями.

Так как у нас WPF MVVM + БД задача, то сначала мы реализуем Репозиторий для работы с источником Данных.
В данном случае БД.
Для Репа Данных у нас будет ОТДЕЛЬНЫЙ проект в котором пока только есть подключение к БД и типы CPContext и Nomenclatura.
Оба типа include (внутренние) и видны только в этой сборке.
Для того чтобы мы могли из других сборок "общаться" с Репом надо задать интерфейс для общения и типы данных для обмена.
Типы данных - это будут иммутабельные DTO типы.
Создаются они в отдельном проекте-библиотеке.

Остальные подробности - позже.

Добавлено через 1 минуту
Цитата Сообщение от Sanya2019 Посмотреть сообщение
ну как меня учили так и делаю ) но это ж удобно чем базу лепить )
Конечно.
Я же писал, что не большой знаток БД.
И даже в голову не пришло поискать стороннее решение для CodeFirst.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.09.2020, 11:24

(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, один текстбокс и одна кнопка. Информация добавляется успешно но она не...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
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) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru