Перезагрузите объект и всю ассоциацию свойств навигации — DbSet Entity Framework.C#

Место общения программистов C#
Ответить
Anonymous
 Перезагрузите объект и всю ассоциацию свойств навигации — DbSet Entity Framework.

Сообщение Anonymous »

У меня возникла проблема с обновлением ассоциации объектов. Когда я получаю такую ​​сущность:

Код: Выделить всё

MyContext context = new MyContext();

Person myPerson = context.PersonSet.FirstOrDefault();
String myPersonName = myPerson.Name;
Address myPersonAddress = myPerson.Address;
У меня есть человек с ассоциацией с именем «Адрес» и свойством с именем «Имя». Если я вручную изменяю данные в базе данных, например имя свойства, мне придется использовать следующий код для перезагрузки моего объекта:

Код: Выделить всё

context.Entry(myPerson).Reload();
и у меня есть новое значение имени. Но если я сделаю то же самое для адреса, это не сработает. Я думаю, это потому, что Address является свойством ассоциации. Мне нужно обновить его.

Как я могу принудительно перезагрузить ассоциацию адреса (и все другие ассоциации в классе Person)?

РЕДАКТИРОВАТЬ:

В одном и том же случае у человека может быть более одного адреса.

Код: Выделить всё

MyContext context = new MyContext();

Person myPerson = context.PersonSet.FirstOrDefault();
String myPersonName = myPerson.Name;
List 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();
Но, похоже, это не лучшее решение для всех моих свойств навигации!

Подробнее здесь: https://stackoverflow.com/questions/908 ... -framework
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»