我正在为我的webApi使用存储库模式,并尝试使Update工作。
这是从mvc webapi控制器接收一个“新”实体,并尝试更新现有对象

public void Update(TEntity entity)
        {

            var oldEntry = _context.Set<TEntity>().Find(entity.Id);

            oldEntry = Mapper.Map(entity, oldEntry);

            Console.WriteLine(oldEntry.ToString());

            _context.SaveChanges();

        }


保存更改无济于事。

如果我明确指定

oldEntry.SomeTextProperty = "TestText";


然后打电话

 _context.SaveChanges();


一切都很好。
如何解决呢?或解决这个问题?
也许有一种方法可以告诉AutoMapper调用属性设置器?

最佳答案

在保存更改之前,您必须告诉EF您已修改实体。
这应该在框架4.5中起作用

_context.Set<TEntity>().AddOrUpdate(new[] {oldEntry});


也许在框架4中是这样的:

_context.Entry(oldEntry).State = System.Data.EntityState.Modified;

关于c# - EF 4.4无法检测到AutoMapper所做的更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12496484/

10-13 01:25