JulieLermansの著書ProgrammingEntityFramework:Dbcontextで読んだEFリポジトリパターンに従いました。
エンティティFavoriteと多対多の関係を持つCustomerというエンティティがあります
これがお客様へのアップデートのサンプルコードです
customer.CustomerLocation_ID = 5;
customer.Favourites.clear();
customer.State = State.Modified;
customerRepository.InsertOrUpdate(customer);
次に、Insertは次のことを行います。
Entry(entity).State = EntityState.Modified;
foreach (var entity in this.ChangeTracker.Entries<IEntityState>())
{
IEntityState stateInfo = entity.Entity;
entity.State = StateHelpers.ConvertState(stateInfo.State);
}
そして最後に:
context.SaveChanges();
お気に入りの名前が一意であるため、保存時にお気に入りで一意のキーの例外が発生します。しかし、私はお気に入りに何も追加していません。
.clear()行を削除すると、すべてが正常に保存されます。
アップデート:
このコードにいくつか試してみたところ、うまくいきました。
foreach (var fav in customer.Favourites)
{
fav.State = State.Modified;
}
顧客に影響を与えている場合でも、お気に入りを変更済みとしてマークして、追跡および更新する必要があるということですか?私はこれをしなければならないと思っていました。