c# - EF 4.4 不检测 AutoMapper 所做的更改

标签 c# .net entity-framework automapper

我正在为我的 webApi 使用存储库模式,并尝试使更新工作。 它所做的是从 mvc webapi Controller 接收一个"new"实体,并尝试更新现有对象

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 调用属性 setter ?

最佳答案

您必须在保存更改之前告诉 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/

相关文章:

c# - MySQL 中的多个同时 SELECT 语句

c# - 如何从 EF 的非异步 SaveChanges 安全地调用异步方法?

c# - Entity Framework : SqlGeography vs DbGeography

c# - 允许用户从谷歌驱动器中选择文件上传到我的服务器

c# - View style设置为Details时如何在Winforms ListView中显示图标和文字?

c# - 将对象类型返回为接口(interface) C#

c# - IEnumerable 中的求和、平均、连接等项的实现选项

asp.net - 在 Visual Studio Team Services 中构建 Core2.0 项目失败,并出现大量程序集导入错误

.net - Windows 7 .net Excel .SaveAs() 来自 HRESULT : 0x800A03EC 的错误异常

c# - SQL注入(inject)攻击防护: where do I start