Мне нужен шаблон добавления или обновления для CTP5. Предполагая модель:
public class User
{
public int UserId { get; set; }
public ICollection<Address> Addresses { get; set; }
}
public class Address
{
public int AddressID { get; set; }
public string Location { get; set; }
}
Если я добавлю нового пользователя, соответствующая таблица адресов также будет заполнена. Но если пользователь уже находится в БД, я получу исключение DbUpdateException. В этом случае я хочу, чтобы данные в базе данных обновлялись новыми данными. Как я могу это сделать?
данные в базе
Адрес таблицы
AddressID Местонахождение
1 ДжонПлейс
2 МэриПлейс
3 ДжиммиПлейс
Пользователь, которого я обновляю, имеет в коллекции Addresses 1 элемент с AddressId: 2, Location=GeorgePlace. Но для ID=2 в БД уже есть запись с location=MarryPlace. Я хочу, чтобы GeorgePlace перезаписал MarryPlace.
У меня не может быть адреса, который не назначен пользователю
Я создаю пользователя, как:
var user=new User();
user.Id=GetUserIDfromService();
foreach(var address in GetAddressesFromService(user.Id)){
user.Addresses.Add(address);
}
context.Users.Add(user);
context.SaveChanges();//this may throw an exception, because there is already a user with this id.