У меня есть база данных, в которой есть таблица с именем m_AttentionFlags, которая ссылается на первичный ключ в m_PermissionCollections. Я построил модель EntityFramework и создал DomainService.EntityFramework, проблема с вставкой RIA - Обновление дочерних объектов вызывает Insert
Теперь с помощью RIA на клиенте я загрузил флаги в местный контекст инициализации элемента управления:
var query = _context.GetM_AttentionFlagQuery();
_context.Load(query, OnGetM_AttentionFlag, null);
Тогда я проводной вверх кнопку, чтобы добавить m_PermissionCollection к выбранному m_AttentionFlag.
if (lstSelected.SelectedItem != null) {
if (!(lstSelected.SelectedItem is m_AttentionFlag))
{
return;
}
m_AttentionFlag flag = lstSelected.SelectedItem as m_AttentionFlag;
m_PermissionCollection coll = new m_PermissionCollection(); //**
flag.m_PermissionCollections = coll; //**
_context.SubmitChanges();
}
Как ни странно это приводит к поведению Вставка: дополнительный m_AttentionFlag с теми же значениями полей добавляется к базе данных с ассоциированным m_PermissionCollection; оригинал остается неповрежденным без влияния его поля m_PermissionCollections. Интересно, если вы удалите строки, помеченные **, и замените их обновлением на простое общедоступное свойство на m_AttentionFlag, например. flag.Description = "новое описание", обновление продолжается, как ожидалось.
Методы DomainService являются значениями по умолчанию, сгенерированными мастерами, и единственная точка интереса заключается в том, что изменение поля m_PermissionCollections в файле m_AttentionFlag изменяет EntityState на элемент на Добавленный, когда он отправляется на сервер.
Я задал этот вопрос на форуме служб RIA, и член предложил мне искать несколько экземпляров DomainContext, но элемент _context создается только один раз, а приведенный здесь код является в значительной степени единственным кодом, не созданным различные инструменты визуальной студии. Какие-нибудь идеи относительно того, что здесь происходит?
Помогите оценить очень.
Стив