【问题标题】:EntityFramework and EntityFramework Core Handling Update Command Plus Self ColumnEntityFramework和EntityFramework核心处理更新命令加自列
【发布时间】:2016-12-09 09:44:32
【问题描述】:

我有这样的情况:

UPDATE TABLE_ABC
SET NAME = NAME + 'XXX_AA'

如何在没有 EntityFramework 或 EF Core 中没有 SqlRaw 的情况下循环 C# 的情况下处理这个问题。 我需要 Pure Sintax Linq 或 Lambda 和 EF / EFCore。 谢谢高级。

【问题讨论】:

    标签: entity-framework entity-framework-6 entity-framework-core


    【解决方案1】:

    如果您不想运行原始 SQL 命令(为什么不呢?它更快)并且想要使用 EF - 您应该将实体从 DB 读取到内存(选择/加载),在内存中处理它们(for/foreach)和保存回数据库:

    var entities = await dbContext.myEntity.ToListAsync();
    foreach(var enitity in entities) {
      entity.Name += "AAA";
    }
    await dbContext.SaveChangesAsync();
    

    这要慢得多。

    对于 EF 6,您可以尝试 EntityFramework.Extended 并使用它构建 UPDATE 命令。

    【讨论】:

    • 为什么不呢?:因为这样做并不总是一帆风顺。对查询进行硬编码并不总是一种选择,因为有时数据库表名可能会更改。然后你需要将实体名称映射到表名称,这是可能的,但很麻烦。然后您的 DBA 可能会将其映射到(只读)视图,并且查询会出错。如果你真的想在 DB 上运行它,你应该使用存储过程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 2020-06-23
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    相关资源
    最近更新 更多