插入束数据 - 实体框架 C#
Posted
技术标签:
【中文标题】插入束数据 - 实体框架 C#【英文标题】:Inserting Bunch Data - Entity Framework 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();
【参考方案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();
【讨论】:
以上是关于插入束数据 - 实体框架 C#的主要内容,如果未能解决你的问题,请参考以下文章