У меня проблема с обновлением ассоциации сущностей. Когда я получаю объект с таким именем:
MyContext context = new MyContext();
Person myPerson = context.PersonSet.FirstOrDefault();
String myPersonName = myPerson.Name;
Address myPersonAddress = myPerson.Address;
У меня есть человек с ассоциацией с именем Address и именем Name. Если я вручную изменяю данные в базе данных, например, имя свойства, я должен использовать следующий код для перезагрузки моего объекта:
context.Entry(myPerson).Reload();
и у меня есть новое значение для Name. Но если я делаю то же самое для адреса, это не сработает. Я думаю, это потому, что Адрес является свойством ассоциации. Мне нужно обновить его.
Как сделать, чтобы принудительно перезагрузить ассоциацию адресов (и все остальные ассоциации в классе Person)?
EDIT:
В этом же случае у человека может быть более одного адреса.
MyContext context = new MyContext();
Person myPerson = context.PersonSet.FirstOrDefault();
String myPersonName = myPerson.Name;
List<Address> myPersonAddresses = myPerson.Addresses;
В этом случае это не ссылка:
context.Entry(myPerson).Reference(p => p.Address).Load();
// Address will be populated with only the new address
// this isn't required because I use lazy loading
но коллекция:
context.Entry(myPerson).Collection(p => p.Addresses).Load();
// Address will be populated with old value and new value
Мне нужно использовать это для работы:
context.Entry(myPerson).Collection(p => p.Addresses).CurrentValue.Clear();
context.Entry(myPerson).Collection(p => p.Addresses).Load();
Но это не кажется хорошим решением для всех моих свойств навигации!