コミットされていないエンティティをDbContextから取得するにはどうすればよいですか?
次のテストを検討してください。
[Test]
public void AddAndRetrieveUncommittedTenant()
{
_tenantRepository.Create("testtenant");
var tenant = _tenantRepository.GetTenantByName("testtenant");
Assert.AreEqual("testtenant", tenant.Name);
}
tenant
であるため、テストは失敗しますnull
。
間には特定のビジネスコードがたくさんありますが、要約すると次のようになります。
私のRepository
クラスGetTenantByName
では、最後のメソッドがメソッドを呼び出しますGetAll
。
public IQueryable<TEntity> GetAll()
{
return DbSet.AsQueryable();
}
private IDbSet<TEntity> DbSet
{
get { return Context.Set<TEntity>(); }
}
そして、私を拡張するクラスDbContext
には、次のメソッドがあります。
public new IDbSet<TEntity> Set<TEntity>() where TEntity : class
{
return base.Set<TEntity>();
}
ブレークポイントを設定するreturn base.Set<TEntity>();
と、エンティティがリポジトリで(local
プロパティを介して)利用可能であることがわかります。
コミットされていないエンティティをリポジトリから取得するにはどうすればよいですか?