CTP5에 대한 추가 또는 업데이트 패턴이 필요합니다. 모델을 가정 :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; }
}
을 나는 새로운 사용자를 추가하는 경우 풀어서 주소 테이블도 채워집니다. 그러나 사용자가 이미 DB에 있다면 DbUpdateException이 발생합니다. 이 경우 데이터베이스의 데이터를 새 데이터로 업데이트하려고합니다. 어떻게해야합니까? 데이터베이스에
데이터
표 주소
AddressID 위치
1 JohnPlace
2 MaryPlace
3 JimmyPlace
[사용자 I 업데이트는 주소 수집에있다 AddressId : 2, Location = GeorgePlace가있는 항목 1 개. 그러나 ID = 2 인 경우 Db에는 이미 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.
@Ryan : 당신이 데이터베이스에 주소를 가질 수 있습니다 그래서 모든 사용자에게 할당되지 않는 이유는 무엇입니까? 또한 업데이트 코드를 게시 할 수 있습니까? –
나는 Jakub Konecki가 제안한 것과 같은 것을 해낸다. 하지만 context.Users.Add (newUser)와 같은 것을 할 수 있기를 바란다. context.SaveChanges() – Ryan
@ Ryan : 코드를 게시하십시오. 업데이트하려는 사용자 및 주소 개체뿐만 아니라 실제 업데이트 방법을 어떻게 받았거나 만들 었는지 알아야합니다. –