相关疑难解决方法(0)

是DbSet <>.本地使用什么特别小心?

几天来,我一直在努力从存储库(DbContext)中检索我的实体.

我试图在原子动作中保存所有实体.因此,不同的实体一起代表了我的一些有价值的东西.如果所有实体都是"有效",那么我可以将它们全部保存到数据库中.实体"a"已存储在我的存储库中,需要检索以"验证"实体"b".

这就是问题出现的地方.我的存储库依赖于DbSet<TEntity>与Linq2Sql一起工作的类(Include()例如导航属性).但是,DbSet<TEntity>它不包含处于"已添加"状态的实体.

所以我(据我所知)有两个选择:

  • 使用ChangeTracker以查看哪些实体可用,并根据它们将它们查询到一个集合中EntityState.
  • 使用该DbSet<TEntity>.Local属性.

ChangeTracker似乎涉及一些额外的努力工作,以使我可以使用Linq2Sql Include()导航属性,例如

DbSet<TEntity>.Local似乎有点怪我.它可能只是名字.我只是读了一些表现不佳的东西(比DbSet <>本身慢).不确定这是否是虚假陈述.

具有重要EntityFramework经验的人能否对此有所启发?什么是"明智"的道路?或者我看到了幽灵,我应该总是使用这个.Local属性吗?

使用代码示例更新:


出了什么问题的一个例子

    public void AddAndRetrieveUncommittedTenant()
    {
        _tenantRepository = new TenantRepository(new TenantApplicationTestContext());

        const string tenantName = "testtenant";

        // Create the tenant, but not call `SaveChanges` yet until all entities are validated 
        _tenantRepository.Create(tenantName);

        //
        // Some other code
        //

        var tenant = _tenantRepository.GetTenants().FirstOrDefault(entity => entity.Name.Equals(tenantName));

        // The tenant will …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework dbcontext dbset

12
推荐指数
2
解决办法
1万
查看次数

标签 统计

c# ×1

dbcontext ×1

dbset ×1

entity-framework ×1