问题标签 [ef-core-2.2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
833 浏览

c# - 实体框架核心闭表(代码优先)

我已经搜索了互联网来创建一个表来支持树数据或层次结构数据,但它似乎没有提供太多信息。

假设我想要一个 Location 表,如果有其他位置数据的父级,它可以自我引用。

如何在 ef-core 中实现以下查询?

  1. 列出根目录下的所有位置项(dept = 0)
  2. 列出所有位置层次结构。例如..
  • 位置 A
    • 位置 B
    • 位置 C
  • 位置 D
    • 位置 E
      • 位置 J
    • 位置 F
      • 位置 K
      • 位置 L
  • 位置 M
  1. 列出所选节点下的所有子位置并首选部门级别(例如 1、2 或其他)。
  2. 列出所选节点下的所有父位置并首选部门级别(例如 1、2 或其他)。

这是我的位置模型...

请帮助或提供任何建议的资源开始会很好。我是 dotnet 核心和实体框架的新手。

谢谢你。

0 投票
0 回答
37 浏览

c# - EF Core - 关系的转换/处理

我有以下内容:

是否可以创建上述场景?我知道一个好的甚至更好的方法是多对多关系。但是将一个新标签添加到列表中并让 EF 处理其余部分会很巧妙。

我知道有价值转换,但我不知道是否可以在这种情况下应用它。如果我没记错的话,您可以在 EF 6 中使用一些自定义映射执行类似的操作,但我在 EF-Core 中看不到任何版本。

提前致谢。

0 投票
0 回答
39 浏览

asp.net-core - Azure DevOps 中 EF Core 迁移的首选方法是什么?

我正在寻找一个工作流来启用 EF Core 的本地迁移(在开发人员实例上),然后通过该过程逐步推动这些迁移:

  • CI/CD 集成开发
  • 促进分期/集成测试
  • 升级到 UAT 和热身
  • 部署到生产

假设我上面至少有 3 个数据库,如果我可能需要在流程的任何步骤回滚更改,我如何隔离和跟踪挂起的更改而不会有损坏的风险?

0 投票
1 回答
123 浏览

c# - 为什么 C# EF Core 删除使用块之间的值?

编辑:答案很简单,我错过了属性 {get; 在我的时间戳上设置},因此 EF Core 会忽略映射。但是,如果您愿意,请继续阅读。

我正在使用 C# EF Core 的 InMemoryDatabase 为我的应用程序进行单元测试。但是,对于一组特定的测试,我遇到了一个奇怪的错误,[1/1/0001 12:00:00 AM]当我稍后引用它们时,某些实体上的 DateTime 被重置为默认值。
这是正在创建并添加到上下文中的 POCO 对象:

这里是它被添加到 DbContext 的地方:

如果我在测试期间在该db.SaveChanges()行之后立即断点,我可以看到仪表已添加到 Meters DbSet 并且它们具有正确的 DateTime 时间戳(即[1/20/2019 12:00:00 AM])。尽管如此,当我稍后像这样引用上下文时:

如果我在这一行断点,则 db.Meters 中的每个仪表都已设置为默认的开始日期时间[1/1/0001 12:00:00 AM]。但是,该Change属性仍按预期保持原始 int 值。

目前这让我大吃一惊,我已经尝试了几种解决问题的方法。我尝试在添加和查询之间添加一个中间步骤,在其中我将遍历每个仪表并更新时间戳,保存更改,然后再查询——但它仍然失败!我试过DateTime? Timestamp了,只是将时间设置为空,我也尝试过添加[DatabaseGenerated(DatabaseGeneratedOption.Identity)],因为这在使用我的 Npgsql 数据库并告诉它在时间戳设置为空时使用 CURRENT_TIMESTAMP 时有所帮助。我意识到我没有告诉 InMemoryDatabase 如何处理空值,但我也从来没有给它空值,那么给出了什么?

是否需要设置一些设置以防止 InMemoryDatabase 在设置值后触摸它们?

0 投票
1 回答
183 浏览

c# - 通过 group by 获取 LEFT JOINED 实体的计数

考虑以下查询,该查询必须返回导演以及每部电影的电影数量和演员数量。如何使用 EF CORE 2.2 在 LINQ 中编写此代码?我需要 LINQ 生成实际使用 GROUP BY 和 EF CORE 2.1 和转发中支持的 SQL 聚合的 SQL。

示例 LINQ 查询是基于答案构建的,并且确实给了我结果,但该查询只有一个 LEFT 连接,没有 group by。输出表明 DefaultIfEmpty()、GroupBy 和 Count 无法翻译,将在本地进行评估。

无法翻译 LINQ 表达式“DefaultIfEmpty()”并将在本地计算。Microsoft.EntityFrameworkCore.Query:警告:无法翻译 LINQ 表达式“DefaultIfEmpty()”,将在本地进行评估。Microsoft.EntityFrameworkCore.Query:警告:无法翻译 LINQ 表达式“来自 {[grpM] => DefaultIfEmpty()} 中的电影电影”,并将在本地进行评估。Microsoft.EntityFrameworkCore.Query:Warning: LINQ 表达式 'GroupBy(new <>f__AnonymousType81(DirectorName = [d].DirectorName), new <>f__AnonymousType62(d = [d], grpM = [grpM]))' 无法翻译,将在本地进行评估。Microsoft.EntityFrameworkCore.Query:警告:无法翻译 LINQ 表达式“DefaultIfEmpty()”,将在本地进行评估。Microsoft.EntityFrameworkCore.Query:警告:无法翻译 LINQ 表达式“DefaultIfEmpty()”,将在本地进行评估。Microsoft.EntityFrameworkCore.Query:警告:无法翻译 LINQ 表达式“来自 {[grpM] => DefaultIfEmpty()} 中的电影电影”,并将在本地进行评估。Microsoft.EntityFrameworkCore.Query:Warning: LINQ 表达式 'GroupBy(new <>f__AnonymousType81(DirectorName = [d].DirectorName), new <>f__AnonymousType62(d = [d], grpM = [grpM]))' 无法翻译,将在本地进行评估。Microsoft.EntityFrameworkCore.Query:警告:无法翻译 LINQ 表达式“Count()”并将在本地进行评估。Microsoft.EntityFrameworkCore.Query:警告:无法翻译 LINQ 表达式“Sum()”,将在本地进行评估。

这里是模型

0 投票
2 回答
254 浏览

c# - 在 ef core 2.2 中执行“select * from (select * from ...)”查询

我正在尝试使用实体框架核心 2.2 在 c# 中使用对此(SQL)的子查询执行类似的查询

在实体框架 > 2.0 中,我尝试执行左连接,但使用自定义函数时,我遇到了 ef 核心警告或错误。是否有任何适当的方法来实现该查询?

0 投票
1 回答
575 浏览

c# - EF Core 从具有多重性零或一的模型中获取实体的导航属性

我正在创建一个通用类来为数据库播种集成测试所需的实体。我可以创建单个实体,但是当一个实体依赖于另一个实体时,我必须手动指示我的班级首先创建父实体,然后继续。我试图使这种检测自动进行,从模型定义中获取具有多重性 0 或 1 的导航属性列表(参考导航属性),一旦完成,我的类将递归地调用自身以首先创建父实体(循环依赖项不在此范围内)。

我曾经在 EF for .net Framework 中执行此操作,但 EF Core 发生了很大变化。我在 EF Core 中缺少的是RelationshipMultiplicity,我在官方文档中找不到对 Multiplicity 的任何引用,甚至艰难的解决方案是检查导航属性是否是一个集合,我希望有更多的控制权并保留东西简单的。

到目前为止,我正在使用以下方法探索模型定义:

0 投票
0 回答
108 浏览

entity-framework-core - EF Core 2.2 急切加载导航属性相关数据问题

我正在使用带有 Postgresql 和代码优先方法的 EF core 2.2。这些是我的课:

我在 postgresql 中看到了 DDL,它看起来不错。问题在于查询该数据。我想使用急切加载,并且此查询不会产生具有相关数据的结果:

编辑:此查询首先运行。如果没有记录,它会停在这里,但如果有一些记录,那么它运行这个查询:

如果我以其他方式做,我会得到正确的,但令人困惑的是我无法获得包含所有相关帖子的博客。

0 投票
1 回答
19761 浏览

.net-core - EF Core 一对一或零关系

我有人员和地址。地址是可选的。请看下面的代码

注册码如下:

我应该如何更改映射以使地址可选?

0 投票
1 回答
827 浏览

c# - 如何为现有的数据库提供者注入/拦截 DbConnection 实例?

假设我有一个带有控制器的 ASP.NET Core 应用程序,该控制器使用DbContext实例作为构造函数参数,遵循标准依赖注入约定。

控制器和DbContext类型都与数据库无关。该应用程序设置其类DbContext中的每个 DI 实例要使用的默认选项。StartUp在运行时的某一时刻,EF Core 将SqlConnection在它判断有必要时实例化一个实例。

我对如何创建此连接实例感兴趣。更具体地说,我想在InfoMessage和上附加事件处理程序StateChange。但是,这必须以不会破坏 EF Core 的正常行为和连接管理的方式完成。

是否有任何服务可以注入(IoC)以便 EF 使用SqlConnection我自己的实例工厂?或者至少有一种方法可以拦截它创建的实例?