问题标签 [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.
c# - 实体框架核心闭表(代码优先)
我已经搜索了互联网来创建一个表来支持树数据或层次结构数据,但它似乎没有提供太多信息。
假设我想要一个 Location 表,如果有其他位置数据的父级,它可以自我引用。
如何在 ef-core 中实现以下查询?
- 列出根目录下的所有位置项(dept = 0)
- 列出所有位置层次结构。例如..
- 位置 A
- 位置 B
- 位置 C
- 位置 D
- 位置 E
- 位置 J
- 位置 F
- 位置 K
- 位置 L
- 位置 M
- 列出所选节点下的所有子位置并首选部门级别(例如 1、2 或其他)。
- 列出所选节点下的所有父位置并首选部门级别(例如 1、2 或其他)。
这是我的位置模型...
请帮助或提供任何建议的资源开始会很好。我是 dotnet 核心和实体框架的新手。
谢谢你。
c# - EF Core - 关系的转换/处理
我有以下内容:
是否可以创建上述场景?我知道一个好的甚至更好的方法是多对多关系。但是将一个新标签添加到列表中并让 EF 处理其余部分会很巧妙。
我知道有价值转换,但我不知道是否可以在这种情况下应用它。如果我没记错的话,您可以在 EF 6 中使用一些自定义映射执行类似的操作,但我在 EF-Core 中看不到任何版本。
提前致谢。
asp.net-core - Azure DevOps 中 EF Core 迁移的首选方法是什么?
我正在寻找一个工作流来启用 EF Core 的本地迁移(在开发人员实例上),然后通过该过程逐步推动这些迁移:
- CI/CD 集成开发
- 促进分期/集成测试
- 升级到 UAT 和热身
- 部署到生产
假设我上面至少有 3 个数据库,如果我可能需要在流程的任何步骤回滚更改,我如何隔离和跟踪挂起的更改而不会有损坏的风险?
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 在设置值后触摸它们?
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__AnonymousType8
1(DirectorName = [d].DirectorName), new <>f__AnonymousType6
2(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__AnonymousType6
2(d = [d], grpM = [grpM]))' 无法翻译,将在本地进行评估。Microsoft.EntityFrameworkCore.Query:警告:无法翻译 LINQ 表达式“Count()”并将在本地进行评估。Microsoft.EntityFrameworkCore.Query:警告:无法翻译 LINQ 表达式“Sum()”,将在本地进行评估。
这里是模型
c# - 在 ef core 2.2 中执行“select * from (select * from ...)”查询
我正在尝试使用实体框架核心 2.2 在 c# 中使用对此(SQL)的子查询执行类似的查询
在实体框架 > 2.0 中,我尝试执行左连接,但使用自定义函数时,我遇到了 ef 核心警告或错误。是否有任何适当的方法来实现该查询?
c# - EF Core 从具有多重性零或一的模型中获取实体的导航属性
我正在创建一个通用类来为数据库播种集成测试所需的实体。我可以创建单个实体,但是当一个实体依赖于另一个实体时,我必须手动指示我的班级首先创建父实体,然后继续。我试图使这种检测自动进行,从模型定义中获取具有多重性 0 或 1 的导航属性列表(参考导航属性),一旦完成,我的类将递归地调用自身以首先创建父实体(循环依赖项不在此范围内)。
我曾经在 EF for .net Framework 中执行此操作,但 EF Core 发生了很大变化。我在 EF Core 中缺少的是RelationshipMultiplicity,我在官方文档中找不到对 Multiplicity 的任何引用,甚至艰难的解决方案是检查导航属性是否是一个集合,我希望有更多的控制权并保留东西简单的。
到目前为止,我正在使用以下方法探索模型定义:
entity-framework-core - EF Core 2.2 急切加载导航属性相关数据问题
我正在使用带有 Postgresql 和代码优先方法的 EF core 2.2。这些是我的课:
我在 postgresql 中看到了 DDL,它看起来不错。问题在于查询该数据。我想使用急切加载,并且此查询不会产生具有相关数据的结果:
编辑:此查询首先运行。如果没有记录,它会停在这里,但如果有一些记录,那么它运行这个查询:
如果我以其他方式做,我会得到正确的,但令人困惑的是我无法获得包含所有相关帖子的博客。
.net-core - EF Core 一对一或零关系
我有人员和地址。地址是可选的。请看下面的代码
注册码如下:
我应该如何更改映射以使地址可选?
c# - 如何为现有的数据库提供者注入/拦截 DbConnection 实例?
假设我有一个带有控制器的 ASP.NET Core 应用程序,该控制器使用DbContext
实例作为构造函数参数,遵循标准依赖注入约定。
控制器和DbContext
类型都与数据库无关。该应用程序设置其类DbContext
中的每个 DI 实例要使用的默认选项。StartUp
在运行时的某一时刻,EF Core 将SqlConnection
在它判断有必要时实例化一个实例。
我对如何创建此连接实例感兴趣。更具体地说,我想在InfoMessage
和上附加事件处理程序StateChange
。但是,这必须以不会破坏 EF Core 的正常行为和连接管理的方式完成。
是否有任何服务可以注入(IoC)以便 EF 使用SqlConnection
我自己的实例工厂?或者至少有一种方法可以拦截它创建的实例?