web-dev-qa-db-ja.com

Entity Framework Code Firstでオブジェクトをデタッチするにはどうすればよいですか?

DbContextにはDetach(object entity)がありません。

最初にEFコードのオブジェクトをデタッチする機能はありますか?

129
Shawn Mclean

既存のオブジェクトをデタッチする場合は、@ Slaumaのアドバイスに従ってください。変更を追跡せずにオブジェクトをロードする場合:

var data = context.MyEntities.AsNoTracking().Where(...).ToList();

コメントで述べたように、これはエンティティを完全に切り離しません。それらはまだアタッチされており、遅延読み込みは機能しますが、エンティティは追跡されません。これは、たとえば、データを読み取るためだけにエンティティをロードし、それらを変更する予定がない場合に使用する必要があります。

138
Ladislav Mrnka

これはオプションです:

dbContext.Entry(entity).State = EntityState.Detached;
215
Slauma