エンティティが DbContext の外部で変更された場合 (デタッチされたエンティティである場合)、エンティティの更新に小さな問題があります。変更されたエンティティをアタッチすると、その状態は変更されません。
私のコードは次のようになります。
var specificationToSave = GetSpecificationFromTmpStore(userSessionGuid);
using (var context = DataContextFactory.GetDataContext())
{
// this works for update, if I change the values inside the context while debugging
// but it breaks with new entities
context.Specifications.Attach(specificationToSave);
// this works for insert new entities, modified entities will be saved as new entities
context.Specifications.Add((specificationToSave);)
context.SaveChanges();
}
私はNHibernateを知っており、それはSaveOrUpdateメソッドです。Hibernate は、エンティティを更新するか挿入するかを値に基づいて決定します。
EF 4.x および DbContext の外部で変更されたエンティティでこれを行うベスト プラクティスは何ですか? このエンティティが変更された状態であることを EF に伝えるにはどうすればよいですか?