コミットされていないエンティティを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プロパティを介して)利用可能であることがわかります。

コミットされていないエンティティをリポジトリから取得するにはどうすればよいですか?