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ジョンプレイス
2 MaryPlace
3ジミープレイス
更新したユーザーは、Addressesコレクション1にAddressId:2、Location=GeorgePlaceのアイテムがあります。ただし、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.