powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC3:
20 сообщений из 20, страница 1 из 1
MVC3:
    #37592282
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сть класс с master-detail, это обрабатывается в одном вью и в одной контроллер акции.
Все, что связано с мастер записью - вопросов нет. Но проблема в том, как обновить подчиненный набор записей.

Т.е. на странице я добавляю картинки, они аплоадятся и потом в контроллере в акции я сохраняю список картинок.
В акции Edit проблема: все добавляемые к списку картинки - доабвляются и сохраняются в базе.
Но удаление не срабатывает, т.е. ошибок нет, но все удаленные остаются.

Код: 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.
mysvcServiceImages = db.ServiceImages
.Where(e => e.MySvcID == mysvcMySvcID).ToList();

List<ServiceImage> list = new List<ServiceImage>();

foreach (ServiceImage sim in mysvcServiceImages)
{
    ServiceImage siEx = serviceImages
        .Where(e => e.MySvcID == sim.MySvcID &&
        e.ImageName == sim.ImageName).FirstOrDefault();
    if (siEx == null)
    {
        list.Add(sim);
    }
}

foreach (ServiceImage sim in list)
{
    mysvcServiceImages.Remove(db.ServiceImages.First(z => z.MySvcID == sim.MySvcID && 
        z.ImageName == sim.ImageName));
}

foreach (ServiceImage sim in serviceImages)
{
    ServiceImage siEx = mysvcServiceImages
        .Where(e => e.MySvcID == sim.MySvcID &&
        e.ImageName == sim.ImageName).FirstOrDefault();
    if (siEx == null)
    {
        db.Entry(sim).State = EntityState.Added;
    }
}
db.SaveChanges();
...
Рейтинг: 0 / 0
MVC3:
    #37592290
libru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нафиг этот ужос ормовский
зделай хранимку с одной командой и дерни ее передав массив иксэмэлем
...
Рейтинг: 0 / 0
MVC3:
    #37592294
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
libruнафиг этот ужос ормовский
зделай хранимку с одной командой и дерни ее передав массив иксэмэлем

да я уже думаю выкинуть нафиг всю эту муйню под названием EF, столько головняков на ровном месте п*ть...
Чтобы примитивные вещи сделать надо мутить что-то невообразимое и непонячтно как оно вообще живет
...
Рейтинг: 0 / 0
MVC3:
    #37592317
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,

удалять нужно из базы а не из листа mysvcServiceImages
...
Рейтинг: 0 / 0
MVC3:
    #37592331
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонWinnipuh,

удалять нужно из базы а не из листа mysvcServiceImages

пошел в цикле и попробовал сделать так:

Код: c#
1.
2.
3.
4.
5.
if (detachedChild == null)
                            {
                                parent.ServiceImages.Remove(child);
                                db.ServiceImages.Remove(child);
                            }




Здесь описано:
http://stackoverflow.com/questions/5538974/the-relationship-could-not-be-changed-because-one-or-more-of-the-foreign-key-pro/5540956#5540956

На этом вызове db.ServiceImages.Remove(child); дает ошибку...

В отладчике заметил, что вот тут сидит все содержимое таблицы из базы, т.е картинки для всех прожектов.
А если и будет 10000 тоже будут все загружаться?
...
Рейтинг: 0 / 0
MVC3:
    #37592480
Фотография OracleLover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых вы удаляете из листа, а не из базы
Во-вторых нельзя вообще пробегая по сету изменять этот самый сет
В-третьих
Код: c#
1.
db.DeleteObject(child);
...
Рейтинг: 0 / 0
MVC3:
    #37592485
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OracleLoverВо-первых вы удаляете из листа, а не из базы
Во-вторых нельзя вообще пробегая по сету изменять этот самый сет
В-третьих
Код: c#
1.
db.DeleteObject(child);



по ссылке в ответе в конце стоит

_dbContext.SaveChanges();


И кстати у меня db.DeleteObject(child); пишет, что такого метода нет...
...
Рейтинг: 0 / 0
MVC3:
    #37592490
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну а здесь то что не так?
Простейшее действие - добавляю 1 элемент в коллекцию.
В отладчике вижу, что добавился, все правильно.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
var parent = db.Services.Find(mysvc.MySvcID); 
if (parent != null && parent.ServiceImages!=null && mysvc.ServiceImages != null)
{
    foreach (var child in mysvc.ServiceImages)
    {
        var attachedChild =
            parent.ServiceImages.FirstOrDefault(z => z.MySvcID == child.MySvcID &&
            z.ImageName == child.ImageName);
        if (attachedChild == null)
        {
            ServiceImage simg = child.Clone();
            parent.ServiceImages.Add(simg);
        }
    }
}
db.SaveChanges();



На db.SaveChanges получаю ошибку

Код: c#
1.
2.
x.Message = "Нарушено ограничение количества элементов. 
Роль \"ServiceImage_mysvc_Target\" связи \"MySvc.Models.ServiceImage_mysvc\" имеет количество элементов 1 или 0..1."
...
Рейтинг: 0 / 0
MVC3:
    #37594893
last_student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuhда я уже думаю выкинуть нафиг всю эту муйню под названием EF, столько головняков на ровном месте п*ть...
Чтобы примитивные вещи сделать надо мутить что-то невообразимое и непонячтно как оно вообще живет

я сам только учу EF, но что мешает сделать хранимку и дергать ее из EF?
...
Рейтинг: 0 / 0
MVC3:
    #37594993
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
last_student
я сам только учу EF, но что мешает сделать хранимку и дергать ее из EF?

То что автор наворотил из простого запроса не причина.
Да и может лучше держать логику в одном месте?
...
Рейтинг: 0 / 0
MVC3:
    #37595015
last_student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонДа и может лучше держать логику в одном месте?

так правильно!
...
Рейтинг: 0 / 0
MVC3:
    #37595111
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
last_studentПарамонДа и может лучше держать логику в одном месте?

так правильно!

о чем вы? точнее о каком именно месте?
я так понял, что EF подходит для простейших, примитивных баз.
А иначе головняк.

Вот мой случай еще один: вчера (есть топик) задвинул свой прожект на хостинг для теста.
Так он нн мог стартовать из-за того, что структура базы отличалась и EF хотела существующую
базу грохнуть и создать, но не могла. Пришлось делать это руками, хотя по идее EF должна сама это делать.
...
Рейтинг: 0 / 0
MVC3:
    #37595113
libru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinnipuhEF хотела существующую
базу грохнуть и создать, но не могла. Пришлось делать это руками, хотя по идее EF должна сама это делать.хреновая идея какаято
а если там данные которые стоят денег?
...
Рейтинг: 0 / 0
MVC3:
    #37595135
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinnipuhEF хотела существующую
базу грохнуть

у вас это прям не OPM а киллер какой то ))
...
Рейтинг: 0 / 0
MVC3:
    #37595142
last_student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuhlast_studentпропущено...


так правильно!

о чем вы? точнее о каком именно месте?


в смысле логику держать или на стороне клиента, или на стороне базы(хранимки тоесть)


Winnipuh]я так понял, что EF подходит для простейших, примитивных баз.
А иначе головняк.

не знаю что Вам тут ответить, работал только с небольшыми, пока проблем не было.

WinnipuhВот мой случай еще один: вчера (есть топик) задвинул свой прожект на хостинг для теста.
Так он нн мог стартовать из-за того, что структура базы отличалась и EF хотела существующую
базу грохнуть и создать, но не могла. Пришлось делать это руками, хотя по идее EF должна сама это делать.
по этому вопросу лучше в соседнюю ветку сходи
...
Рейтинг: 0 / 0
MVC3:
    #37595275
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонWinnipuhEF хотела существующую
базу грохнуть

у вас это прям не OPM а киллер какой то ))

не у меня, а у EF

DropCreateDatabaseIfModelChanges
...
Рейтинг: 0 / 0
MVC3:
    #37595277
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
libruWinnipuhEF хотела существующую
базу грохнуть и создать, но не могла. Пришлось делать это руками, хотя по идее EF должна сама это делать.хреновая идея какаято
а если там данные которые стоят денег?

я о том же..

Я чайник в этом деле, потому вот шаг за шагом, с использованием книжек пытаюсь понять, как оно делается.
...
Рейтинг: 0 / 0
MVC3:
    #37595288
libru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот интересно а если поменялась всего 1 индексированная вьюха оно кинется ее пересоздавать?
этот процесс вообщето может и пару часов занять если исходные таблицы здоровые
а шо при этом с логом транзакций будет мне и представить страшно
не, нафиг, нафиг, такие дурные настройки подефалту должны быть выключены
...
Рейтинг: 0 / 0
MVC3:
    #37595429
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuhlibruпропущено...
хреновая идея какаято
а если там данные которые стоят денег?

я о том же..

Я чайник в этом деле, потому вот шаг за шагом, с использованием книжек пытаюсь понять, как оно делается.

Проводите эксперименты на базе которую не жалко, сделав бекап перед этим.
Винт точно не форматнет )
...
Рейтинг: 0 / 0
MVC3:
    #37595511
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонWinnipuhпропущено...


я о том же..

Я чайник в этом деле, потому вот шаг за шагом, с использованием книжек пытаюсь понять, как оно делается.

Проводите эксперименты на базе которую не жалко, сделав бекап перед этим.
Винт точно не форматнет )

что и делаю.. но как быть, если сайт работает, а понадобилось добавить поле или таблицу?
песец всем данным?
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC3:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]