相关疑难解决方法(0)

实体框架 - 为什么要明确地将实体状态设置为已修改?

官方文档说修改实体我检索DbEntityEntry对象并使用属性函数或我将其状态设置为修改.它使用以下示例

Department dpt = context.Departments.FirstOrDefault();
DbEntityEntry entry = context.Entry(dpt);
entry.State = EntityState.Modified;
Run Code Online (Sandbox Code Playgroud)

我不明白第二和第三声明的目的.如果我问一个像第一个语句这样的实体的框架,然后修改POCO,就像在

dpt.Name = "Blah"
Run Code Online (Sandbox Code Playgroud)

如果我再问问EF到的SaveChanges(),实体被修改的状态(我通过快照跟踪猜测,这是不是一个代理)和变化,而不需要手动设置状态持续存在.我在这里错过了什么吗?

entity-framework

46
推荐指数
2
解决办法
4万
查看次数

实体框架6异步操作和TranscationScope

我在stackoverflow上搜索但找不到类似的问题,请指出我是否有一个问题.

我试图用同步和异步操作实现一个通用的可重用存储库,但是我对实体框架和工作单元的了解很少,我很难找到实现它的正确方法.

我在SaveAndCommit操作中添加了一些变体,但不知道使用事务和异步执行此操作的最佳方法是什么.

- - 编辑 - -

根据我的理解,当执行多个操作时应该使用事务,但出于理解目的,我将它用于一个操作.(如果我错了,请纠正我)

这就是我到目前为止所做的

public class Service<TEntity> : IService<TEntity>
    where TEntity : Entity
{
    #region Constructor and Properties

    UnitOfWork _unitOfWork { get { return UnitOfWork.UnitOfWorkPerHttpRequest; } }

    protected DbSet<TEntity> Entities
    {
        get { return _unitOfWork.Set<TEntity>(); }
    }

    #endregion Constructor and Properties


    #region Operations

    public virtual IQueryable<TEntity> QueryableEntities()
    {
        return Entities;
    }

    public virtual async Task<IList<TEntity>> WhereAsync(Expression<Func<TEntity, bool>> predicate)
    {
        return await Entities.Where(predicate).ToListAsync();
    }

    public virtual IList<TEntity> Where(Expression<Func<TEntity, bool>> predicate)
    {
        return Entities.Where(predicate).ToList();
    }

    public …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework transactionscope async-await

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