【问题标题】:Inserting Bunch Data - Entity Framework C#插入束数据 - 实体框架 C#
【发布时间】:2022-01-01 10:23:48
【问题描述】:

这是我的 SQL 语言查询:

INSERT INTO db.server(client_id, server_id, count) 
    SELECT id, type, COUNT(*) 
    FROM db.service 
    GROUP BY id, type

如何将这样的插入转换为 LINQ(用于实体框架)查询?

【问题讨论】:

  • LINQ 本身并不针对数据库进行操作。你在使用实体框架(LINQ to Entities)吗?
  • @Crowcoder 是的,我正在使用实体框架。
  • 您可以将新实体添加到上下文中并调用 SaveChanges()
  • 对于像 EF 这样的 ORM,您通常不会这样做。您对上下文跟踪的实体执行操作,然后SaveChanges()。您可以使用上下文执行原始 sql,但这不是 LINQ,如果您不需要,也不建议这样做。
  • db.Servers.AddRange(db.Services.GroupBy(x => new { x.Id, x.Type }).Select(x => new Server() { Id = x.Key.Id, Type = x.Key.Type, Count = x.Count() }); db.SaveChanges();

标签: c# entity-framework linq


【解决方案1】:

以下查询等价于您在 SQL 中的查询。

var list = db.Services
           .GroupBy(a => new { a.ID, a.Type })
           .Select(a => new Server { Client_ID = a.Key.ID, Server_ID = a.Key.Type, Count = a.Select(b => b.ID).Count() }).ToList();


//add to db
db.Servers.AddRange(list);
db.SaveChanges();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多