|
0 / 0 / 0
Регистрация: 11.03.2015
Сообщений: 14
|
||||||
MS SQL Entity Framework + Repository, обновление данных12.03.2015, 11:33. Показов 5533. Ответов 27
Метки нет (Все метки)
Всем привет, помогите пожалуйста разобраться, вопрос по сути простой.
Имеем Entity Framework и простейший репозиторий (CRUD операции убрал для наглядности):
И тут такая проблема. Новые, либо удалённые сущности, актуализируются на ура. Но изменения в уже загруженных сущностях не отображаются. Почему? Пробил профайлер на базе, каждый раз при GetAll() идёт полная выборка таблицы. По идее данные доходят до контекста, но почему-то не обновляются сущности ![]() Добавлено через 1 час 49 минут Посмотрел. Практически все эти темы я уже до этого прочитал, там нет ответа на мой вопрос (Добавлено через 18 часов 31 минуту Ребят, пожалуйста, помогите найти в чём загвоздка. Без этого дальше разбираться не могу.
0
|
||||||
| 12.03.2015, 11:33 | |
|
Ответы с готовыми решениями:
27
Обновление данных в Entity Framework
В чем разница между Entity Framework и Entity Framework Core? |
|
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
|
|
| 12.03.2015, 12:06 | |
|
а где собственно код обновления, как вы обновляете
0
|
|
|
0 / 0 / 0
Регистрация: 11.03.2015
Сообщений: 14
|
|
| 12.03.2015, 12:18 [ТС] | |
|
Данные обновляются в базе, я лишь хочу получить актуальные данные по вызову функции GetAll()
Однако я получаю лишь новые строки, уже загруженные сущности не обновляются, хотя с базы тянется вся таблица.
0
|
|
|
0 / 0 / 0
Регистрация: 11.03.2015
Сообщений: 14
|
|||||||||||
| 12.03.2015, 14:26 [ТС] | |||||||||||
|
Вот так:
У меня есть unitOfWork, в котором хранятся репозитории и Longlife контекст. Все репозитории используют именно его.
0
|
|||||||||||
|
|
||||||
| 12.03.2015, 15:27 | ||||||
Добавлено через 39 минут dSid, а вообще мне кажется можно было бы сделать по другому чуть-чуть есть базовый сиквел репозиторий:
0
|
||||||
|
0 / 0 / 0
Регистрация: 11.03.2015
Сообщений: 14
|
||||||
| 12.03.2015, 15:38 [ТС] | ||||||
|
я не понял что это такое
Сделаю пример и выложу его сюда.
0
|
||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||
| 12.03.2015, 15:48 | |||||||||||||||||||||||||||||||||||||||||||
|
dSid, а вообще мне кажется можно было бы сделать по другому чуть-чуть
Добавлено через 3 минуты
Добавлено через 2 минуты это:
0
|
|||||||||||||||||||||||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 11.03.2015
Сообщений: 14
|
|
| 12.03.2015, 18:30 [ТС] | |
|
Вот готовый тест-проект, всё не нужное вырезано. Нужна лишь база Northwind.
Простой пример. Запустили прогу, сотрудники отобразились. Изменили сотрудника в базе вручную. Нажали обновить и... ничего не происходит. Почему? FF_Repository_Test.zip
0
|
|
|
|
|
| 12.03.2015, 23:50 | |
|
не знаю, что у вас там не получается..
создал свою таблицу, так быстрее.. есть у нас запись - отобразили: заинсертили новую, рефрешим по кнопке - отобразили: по поводу биндингСурса - зачем? и наглядная демонстрация свойства которое инкапсулирует некоторую логику грида:
0
|
|
|
0 / 0 / 0
Регистрация: 11.03.2015
Сообщений: 14
|
||
| 13.03.2015, 12:05 [ТС] | ||
|
Спасибо большое за обстоятельный ответ. Конечно можно многое сделать по другому, это скорее уже концептуальный вопрос.
В вашем примере вы всё сделали правильно, новые, как и удалённые строчки отображаются без проблем. Однако, измените в базе уже загруженную сущность и попробуйте обновить грид! Вы не увидите своих изменений, в ЭТОМ то и вся проблема.
0
|
||
|
|
|||||||||
| 13.03.2015, 12:16 | |||||||||
|
UI ничего не должен знать о DAL (только UoW) никаких ссылок на него и т.д
даж перепишу на рабочем пк. Добавлено через 4 минуты В Вашем варианте (по крайней как написано в коде выше) вы тащите контекс наружу:
0
|
|||||||||
|
0 / 0 / 0
Регистрация: 11.03.2015
Сообщений: 14
|
||
| 13.03.2015, 12:45 [ТС] | ||
|
Не увидите, я уверен ))) Я уже неделю пытаюсь с этим разобраться. Казалось бы такой простой вопрос, ан нет... Добавлено через 16 минут Кажется я понял, что вы имеете ввиду. Мой репозиторий это так же DAL, и да, я работаю с ним непосредственно в UI, это вы мне хотели сказать?
0
|
||
|
0 / 0 / 0
Регистрация: 11.03.2015
Сообщений: 14
|
|
| 13.03.2015, 13:08 [ТС] | |
|
Понятно. Просто это тестовый проект, чтоб продемонстрировать поведение EF.
0
|
|
|
|
||||||||||||||||
| 13.03.2015, 13:21 | ||||||||||||||||
|
ну я вам скажу, что где-то вы напортачили в своей реализации.
1.
2.вот соббсно класс формы :
Добавлено через 1 минуту что то вы не диспоузите, мне кажется.
0
|
||||||||||||||||
|
0 / 0 / 0
Регистрация: 11.03.2015
Сообщений: 14
|
|
| 13.03.2015, 13:45 [ТС] | |
|
По первому пункту реализации вообще нет, это так, кусок интерфейса на будущее, он тут вообще не учавствует.
А во втором вообще неразбериха. Сначала мы используем один контекст, который находится в UnitOfWork, для инициализации - прекрасно. А вот при вызове Reset, получаем следующее: 1. мы создаём совершенно новый контекст (и понятно что тогда грид нормально ресетится). Зачем? У нас уже есть один глобальный контекст для всего приложения. 2. мы опрашиваем его напрямую, в обход репозитория, не говоря уже о BL итд. 3. после Reset() контекст уничтожится и я не смогу записать в базу изменения.
0
|
|
|
0 / 0 / 0
Регистрация: 11.03.2015
Сообщений: 14
|
|
| 13.03.2015, 14:05 [ТС] | |
|
Это изначально было понятно, что новый контекст получит обновлённые данные и создаст корректные сущности.
Вопрос как раз в том, почему этого не делает уже готовый контекст. В коде ошибки нет. Дело в понимании архитектуры и принципа работы EF. Вот что я накопал: When you use EF it by default loads each entity only once per context. The first query creates entity instace and stores it internally. Any subsequent query which requires entity with the same key returns this stored instance. If values in the data store changed you still receive the entity with values from the initial query. This is called Identity map pattern. You can force the object context to reload the entity but it will reload a single shared instance.
0
|
|
| 13.03.2015, 14:05 | |
|
Помогаю со студенческими работами здесь
20
Автообновление данных с Entity Framework Синхронизация баз данных Entity Framework
Entity Framework не создает базу данных
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|