首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用投影在EF核心中插入数据

如何使用投影在EF核心中插入数据
EN

Stack Overflow用户
提问于 2021-09-30 12:42:19
回答 2查看 269关注 0票数 1

我试图使用投影写入数据库,以避免将域对象映射到与表布局匹配的对象。然而,我发现的每个投影示例只显示如何从数据库中读取。如何将我的实体投影到其数据库版本以插入它?

代码语言:javascript
复制
class Foo
{
   //...
}

class FooEF
{
   //...
}

DbSet<FooEF> dbSet;

// Read
var foos = dbSet.Select(fooEF => new Foo { ... }).ToList();

// Write
???
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-30 13:15:09

你不能用EF核心做这件事。任何插入/更新/删除应通过更改跟踪器。

无论如何,有扩展linq2db.EntityFrameworkCore可以帮助进行这样的查询(免责声明:我是创建者之一)

代码语言:javascript
复制
var foos = dbSet.Select(fooEF => new Foo { ... });

foos.Insert(dbSetFoo.ToLinqToDBTable(), x => x);

扩展将创建INSERT FROM SQL,并且不会将数据传输到客户端。

票数 1
EN

Stack Overflow用户

发布于 2021-09-30 12:57:35

您需要使用db上下文。您必须为dbSet类型定义Foo

代码语言:javascript
复制
public class ApplicationDbContext : DbContext
{
    public DbSet<Foo> DbSetFoo{ get; set; }
    public DbSet<FooEF> DbSetFooEF { get; set; }
    ...
}

...

var foos = dbSet.Select(fooEF => new Foo {...})
    .ToList()
    .ForEach(foo=>context.DbSetFoo.Add(foo));
context.SaveChanges();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69392441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档