2010-01-07 6 views
0

У меня есть база данных, в которой есть таблица с именем 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 создается только один раз, а приведенный здесь код является в значительной степени единственным кодом, не созданным различные инструменты визуальной студии. Какие-нибудь идеи относительно того, что здесь происходит?

Помогите оценить очень.

Стив

ответ

Смежные вопросы