У меня есть Visual Studio 2010 сгенерированный набор классов POCO (только из коробки шаблоны POCO, сгенерированные из схемы БД). Для данного варианта использования я позволяю пользователю загрузить объект (контакт CRM) и действовать на него - добавить номера телефона (который сам по себе является отдельным объектом, связанным внешним ключом) и адрес (также отдельный объект) и т. Д. Между postbacks Я сохраняю измененные сущности во ViewState (я не хочу сохранять изменения в базе данных сразу). Проблема возникает, когда пользователь нажимает кнопку Сохранить. Основной контакт CRM будет сохранен нормально (любые изменения обнаружены и сохранены), но ни одно из связанных свойств не будет сохранено - независимо от того, является ли это новым дополнением или измененным EF, просто игнорирует его.
Как заставить Entity Framework обнаруживать, что у меня есть изменения в моих связанных свойствах? Я использую это, чтобы сохранить мой основной контакт:
//contact is an instance of CRMContact retrieved from ViewState
if (contact.Id == 0) {
CRMEntities.CRMContacts.AddObject(contact);
} else {
CRMContact orig = CRMEntities.CRMContacts.Where(c => c.Id == contact.Id).FirstOrDefault();
CRMEntities.CRMContacts.ApplyCurrentValues(contact);
}
CRMEntities.SaveChanges(SaveOptions.DetectChangesBeforeSave | SaveOptions.AcceptAllChangesAfterSave);
Это нормально работает для контактной сущности, но не для моих связанных. Что мне нужно добавить для телефонных номеров и электронных писем, которые будут добавлены и / или обновлены?
Обратите внимание, что я не хочу использовать отслеживание изменений на основе прокси.
Спасибо