DbContext は ObjectContext を内部で使用し、EF チームはこれを保護されたプロパティとして利用できるようにします。これは、下位レベルの API にドロップダウンする必要があり、ここではそのように聞こえる場合に備えて、派生から必要な機能を使用または公開できるようにするためです。 Dbコンテキスト:
public class YourContext : DbContext
{
public void Detach(object entity)
{
ObjectContext.Detach(entity);
}
}
次に、コントローラーからこのメソッドを呼び出して、エンティティをデタッチできます。
または、よりリッチな API を持つように変更することもできます。
public class YourContext : DbContext
{
public void ChangeObjectState(object entity, EntityState entityState)
{
ObjectContext.ObjectStateManager.ChangeObjectState(entity, entityState);
}
}
メタデータから DbContext がどのように見えるかを次に示します。
public class DbContext : IDisposable
{
protected System.Data.Objects.ObjectContext ObjectContext { get; }
...
}