Семя EF AddOrUpdate не обновляет дочерние сущности

У меня возникли проблемы с заполнением данных, и я смог воспроизвести проблему с очень маленьким приложением.
Учитывая, что у вас есть этот начальный метод:

    protected override void Seed(JunkContext context)
    {
        context.Junks.AddOrUpdate(x => x.Name,
            new Junk()
            {
                Name = "BANANAS!!",
                Item = new JunkItem()
                {
                    Name = "APPLES!!!"
                }
            }
        );
    }

когда вы запускаете базу данных обновления -в PMC, все объекты успешно создаются. Хорошо.
Но когда вы хотите пойти и обновить базу данных,скажите, что ваш начальный метод теперь таков:

    protected override void Seed(JunkContext context)
    {
        context.Junks.AddOrUpdate(x => x.Name,
            new Junk()
            {
                Name = "BANANAS!!",
                Item = new JunkItem()
                {
                    Name = "ORANGES!!!"
                }
            }
        );
    }

Дочерняя сущность не обновляется. Кажется, единственный способ, которым мы можем -повторно заполнить базу данных, — это стереть базу данных и выполнить повторное заполнение всего. Я думаю, что понимаю, почему это не работает так, как я ожидаю, но, возможно, кто-то может указать мне правильное направление, чтобы соответствующим образом обновить этот начальный метод. Я знаю, что могу просто написать context.JunkItems. (... )но похоже, что это превзошло бы всю цель «AddOrUpdate».

Я думаю, мне придется определить «ключи» для каждого дочернего объекта. Пример :'Junk' получает x => x.Name, но для 'JunkItem' в настоящее время должен быть установлен 'update key'. Я предполагаю, что проблема в этом, но как мне с этим справиться?

15
задан Ladislav Mrnka 14 August 2012 в 12:06
поделиться