插入束数据 - 实体框架 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#的主要内容,如果未能解决你的问题,请参考以下文章

实体框架不允许在 localdb (Mvc 4- C#) 中插入列

实体框架 6:审计/跟踪更改

C#:更改实体框架的检索数据类型

实体框架在重建时插入初始数据

使用实体框架模型插入数据

将数据插入数据库时​​实体框架中的验证错误