С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676

Работа с SQlite Entity Framework через кеш

07.06.2019, 10:01. Показов 1171. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Помогите найти примеры работы SQlite Entity Framework через кеш в WinForm C#

Меня интересует следующая реализация

нужно что бы работа с базой данных шла через кеш

При открытии программы загружаем в кеш данные из Базы данных

а после юзаем их из кеша

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

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

как все это добро реализовать?

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

Создать базу данных на SQLite через entity framework
Добрый день, задача по коду (code first) создать базу данных на SQlite через entity framework, можете подсказать как правильно это сделать?...

Entity Framework + SQlite
Можно ли создать БД SQLite в Entity Framework ?

SQlite with Entity Framework
Здравствуйте, в тестовом задании нужно создать приложение работающее с SQLite. Хотелось бы при этом ипользовать EF 6.0.2. что в интернете...

10
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
07.06.2019, 11:41
Какой кэш ? В EntinityFramework используется контекст, в него загружайте, что вам нужно и работайте. В нужное время синхронизируйте контекст с реальной БД. Вот тут, всё описано. https://professorweb.ru/my/ent... /6/level1/
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
07.06.2019, 13:34  [ТС]
Цитата Сообщение от PoPsa85 Посмотреть сообщение
Какой кэш ? В EntinityFramework используется контекст, в него загружайте, что вам нужно и работайте. В нужное время синхронизируйте контекст с реальной БД. Вот тут, всё описано. https://professorweb.ru/my/ent... /6/level1/
0
у меня уже все это сделано!

но есть одно но в базе в одной из таблиц 50 000 строк на запрос уходит доли секунды но на заполнение датагрида уходит намного больше

о кеше

я боролся с зависаниями в датагриде у меня выводятся картинки и все это дело подвисало при скролинге

мне на этом форуме подсказали загружать при старте программы картинки в кеш следующим образом

я создал новый класс

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace CRM_FULL_SET.ОбщиеМодули.ВспомогательныеМодулиСправочников
{
    class TestCahce
    {
        public static Bitmap DockOpenpomechen { get; set; }
        //...
        public static Bitmap DockOpen { get; set; }
 
        public static Bitmap _2424elementpomechen { get; set; }
        public static Bitmap _2424element { get; set; }
        public static Bitmap DockClosedpomechen { get; set; }
        public static Bitmap DockClosed { get; set; }
 
    }
}
далее при старте программы (В главной форме)

написал вот такой вот код

C#
1
2
3
4
5
6
TestCahce.DockClosedpomechen   = Properties.Resources.DockClosedpomechen;
            TestCahce.DockClosed           = Properties.Resources.DockClosed;
            TestCahce.DockOpen             = Properties.Resources.DockOpen;
            TestCahce.DockOpenpomechen     = Properties.Resources.DockOpenpomechen;
            TestCahce._2424element         = Properties.Resources._2424element;
            TestCahce._2424elementpomechen = Properties.Resources._2424elementpomechen;
теперь при заполнении датагрида я использую картинки не из ресурсов а из этого класса

вопрос можно ли подобное сделать и с данными в БД?
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
07.06.2019, 13:50
Цитата Сообщение от Sanya2019 Посмотреть сообщение
но на заполнение датагрида уходит намного больше
Вам не кэш нужен, а VirtualMode у DGV
https://docs.microsoft.com/en-... ew-control
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
07.06.2019, 14:29  [ТС]
Цитата Сообщение от PoPsa85 Посмотреть сообщение
Вам не кэш нужен, а VirtualMode у DGV
https://docs.microsoft.com/en-... ew-control

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

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

Добавлено через 7 минут
Цитата Сообщение от Sanya2019 Посмотреть сообщение
Если я включаю виртуальный режим то почемуто перестают работать события датагрида ColumnAdded() и CellFormatting()
поэтому решил отказаться от виртуал моде

простите завел Вас в заблуждение!

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

когда я в свойствах датагрида включаю виртал моде у меня все выводится но картинки не показывает (

поэтому сночало посчитал что он вообще не входит в эти события ColumnAdded() и CellFormatting()

когда написал здесь решил отладить и нашел одно но (
CellFormatting() в этом событии у меня есть условие

C#
1
2
3
4
5
6
7
8
9
10
11
12
if (ТаблицаСпискаТоваров.Columns[e.ColumnIndex].Name.Equals("Картинка"))
            {
                if (ТаблицаСпискаТоваров.Rows[e.RowIndex].Cells["Картинка"].Selected == true)
                {
                    ТаблицаСпискаТоваров.Rows[e.RowIndex].Cells["Картинка"].Selected = false;
                    ТаблицаСпискаТоваров.Rows[e.RowIndex].Cells["Наименование"].Selected = true;
                }
            }
 
 if (e.ColumnIndex != 0)
            {
}
Так вот e.ColumnIndex всегда Ноль (

но почему не устанавливается Selected ?

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

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 String stringcatValue = ТаблицаСпискаТоваров.Rows[e.RowIndex].Cells["ЭтоКатегория"].Value.ToString();
                switch (stringcatValue)
                {
                    case "Да":
                        //*********************************************************************************************
                        String stringValueproverkapomechen = ТаблицаСпискаТоваров.Rows[e.RowIndex].Cells["Помечен"].Value.ToString();
                        switch (stringValueproverkapomechen)
                        {
                            case "Да":
                                Bitmap DockClosedpomechen = Properties.Resources.DockClosedpomechen;
                                ТаблицаСпискаТоваров.Rows[e.RowIndex].Cells["Картинка"].Value = TestCahce.DockClosedpomechen;// DockClosedpomechen;
                                break;
                            case "Нет":
                                Bitmap DockClosed = Properties.Resources.DockClosed;
                                ТаблицаСпискаТоваров.Rows[e.RowIndex].Cells["Картинка"].Value = TestCahce.DockClosed;
                                break;
                        }
но конкретно вот здесь задается картинка для колонки датагрида

ТаблицаСпискаТоваров.Rows[e.RowIndex].Cells["Картинка"].Value = TestCahce.DockClosed; но оно не устонавливается!

а как только обрубаю виртал може сразу все показывает от чего так происходит?
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
07.06.2019, 14:55
Sanya2019, Вывидимо просто включаете VirtualMode, но не реализуете его. Картинка ваша должна подгружаться в CellValueNeeded. Это раз. А два, лучше использовать BindingSource
1
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
07.06.2019, 15:46  [ТС]
Цитата Сообщение от PoPsa85 Посмотреть сообщение
Вывидимо просто включаете VirtualMode, но не реализуете его. Картинка ваша должна подгружаться в CellValueNeeded. Это раз. А два, лучше использовать BindingSource

Спасибо! да Вы правы я просто его включаю (дамал этого хватит ) :-)

Помогите найти пример (проект) где реализовано все это добро
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
07.06.2019, 16:05
Sanya2019, Ссылка, что я дал в первый раз и вот эта https://docs.microsoft.com/ru-... e-datagrid

Еще можно реализовать постраничную навигацию, вместо VirtualMode. Смотрите по ситуации.
1
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
07.06.2019, 16:19  [ТС]
Цитата Сообщение от PoPsa85 Посмотреть сообщение
Ссылка, что я дал в первый раз и вот эта https://docs.microsoft.com/ru-... e-datagrid
Еще можно реализовать постраничную навигацию, вместо VirtualMode. Смотрите по ситуации.
спасибо!

Добавлено через 3 минуты
https://docs.microsoft.com/ru-... e-datagrid а отсбда нельзя скачать готовый проект?
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
07.06.2019, 16:23
Цитата Сообщение от Sanya2019 Посмотреть сообщение
а отсбда нельзя скачать готовый проект
Не знаю. Вам же всё равно под себя переделывать нужно. Лучше в статью вникнуть и попытаться понять. Потом проще будет.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
07.06.2019, 16:45  [ТС]
Цитата Сообщение от PoPsa85 Посмотреть сообщение
Не знаю. Вам же всё равно под себя переделывать нужно. Лучше в статью вникнуть и попытаться понять. Потом проще будет.
мне просто понятнее станет когда я буду все это добро изучать в Visual studio

Добавлено через 16 минут
Я не понимаю как создать приложение на офсновании этого примера (

https://docs.microsoft.com/ru-... e-datagrid

я создал новое приложение зашел в код формы и заменил там все оно начало орать

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace VirtualJustInTimeDemo1
{
    static class Program
    {
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1()); // ругается тепреь на Form1()
        }
    }
}
я понимаю что прикол в том что я удалил посути определение первой формы но я не понимаю куда тогда встовлять тот код из примера?

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

Добавлено через 1 минуту
если создаю юзер контрол то код его формы совсе мне похож на код формы что в первом коде примера (

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

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

Entity Framework + Sqlite
Имеется ряд проблем с EF. Есть: База данных SqLite Руками написанные классы для моделей. Общий DataContext для нескольких...

Entity Framework 6.0 и sqlite
Добрый день! Пытаюсь использовать Entity Framework 6.0 в рамках среды VS2013 с БД sqlite. Добавляю к проекту новую модель ADO.NET EDM....

Database first, SQLite, Entity Framework
Пытался подключить SQLite базу как на этом видео: https://vimeo.com/103372740. Не получается когда добавляю модель ADO.NET EDM. В...

Entity Framework Core + SQlite
У меня есть вот такая модель БД Делаю запрос в базу для объединения данных из всех таблиц using (var db = new dbaseContext()) ...

В Entity Framework использовать SQLite
Доброе время суток! Пытаюсь использовать Entity Framework в VS2013 с БД sqlite. Добавляю к проекту новую модель ADO.NET EDM. Но в...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru