问题标签 [ef-core-5.0]
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.
ef-core-5.0 - 如果属性尚未加载,则将惰性属性设置为 null 不会将更改持久保存到数据库
我们在 EF 内核中使用延迟加载,并且发现在尚未加载延迟加载属性时将其设置为 null 实际上不会使数据库中的值无效。
例如,假设我们在数据库中有文章和作者实体。我们在数据库中有一篇文章链接到“John Doe”的作者。
如果我们从数据库中检索该文章,然后将作者设置为 null,则此更改不会持久保存到数据库中。
如果我们从数据库中检索该文章并在将其设置为 null 之前先导航 Author 属性,则更改将持久保存到数据库中。
这是预期的行为吗?我们使用的是 v5.0.0-rc2.20475.6。
.net-5 - 升级到 EF Core 5.0 后出现 InvalidCastException
我刚刚将我的项目从 .NET Core 3.1 升级到 .NET 5.0 并将所有包更新到最新版本。一切都很好,但现在我在加载一些实体时遇到了问题,出现了这个错误:
我不确定,但我有几个实体具有 Address 属性,这是一种[Owned]
具有NetTopologySuite.Geometries.Point
属性的类型,我怀疑这可能是罪魁祸首。
很抱歉,这个问题如此含糊,但我很困惑这里出了什么问题,或者如何进一步诊断它,如果有人有任何想法或指示,我将非常感激听到他们的声音!
编辑:这绝对是 NetTopologySuite 的问题。此处的准系统项目演示了错误
c# - 使用 EF Core 5.0 加载自引用实体(只需在导航属性中获取父母和他们的孩子)
我想实现一个评论系统,这是我的评论实体。
这是我在 Fluent API 中的配置
一切正常,我可以使用此代码加载具有层次结构的所有记录(包括父级和子级)
但是这段代码会加载所有元素,例如子元素。但我想加载所有父母,然后是他们的孩子,然后是孙子,然后......
我将此代码用于这种情况
这段代码只是将所有父母与他们的孩子一起加载,而不是孙辈和更多的层次结构。
我应该如何编写这个查询?
entity-framework-core - 使用 EF Core 5 将 SQL Server 表拆分为多个文件
感谢您在这件事上的帮助。
问题
在某些情况下,将 SQL Server 数据库移交给您后,您会发现主数据文件过大。如此大的数据文件可能会出现管理困难,例如无法进行部分备份或使用分离和附加方法无法顺利迁移数据文件的情况。
解决方案
一个关键的解决方案是识别主文件组中最大的表并重建表,将数据定向到您创建的另一个文件组,该文件组可能在不同的磁盘上具有多个数据文件。
但是,我不知道如何在 EF Core 5(代码优先)中将任何架构拆分为单独的数据文件(.mdf)?
c# - System.InvalidOperationException: '无法翻译集合操作,因为两个操作数具有不同的 'Include' 操作
我正在使用 Entity Framework Core 5 和Table Per Type 功能。我有Contractor
实体和两个继承的实体:Company
和Individual
. 我需要联合他们。我正在尝试使用以下代码将它们合并到一个集合中:
在 DBContext 我有以下配置方法:
问题:
如何摆脱异常或如何修改我的配置以便填充股东并且我可以简单地使用 Contractors DbSet 而不是手动构建联合查询?
System.InvalidOperationException
无法转换集合操作,因为两个操作数具有不同的“包含”操作。考虑在两侧应用相同的“包含”。
堆栈跟踪:
在 Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.ProcessSetOperation(NavigationExpansionExpression outerSource,MethodInfo genericMethod,NavigationExpansionExpression innerSource)
它与 .Union() 一致。
以前我在 DbContext 中有 Contractors DbSet,但 Shareholders 集合没有填写公司对象。所以我重写了如上所示的代码。
.net-5 - 如何更新多对多关系中的现有对象(.Net 5)
我一直在将 .Net 5 和 EF Core 5 用于小型 Web 应用程序。鉴于 EF Core 5 支持很多 - 许多开箱即用,因此不需要连接表。
更新数据库中已存在的对象时遇到问题。对于我的应用程序,我有很多关系的运动员和父母。
当我尝试更新与另外两个父母有关系的现有运动员时,我收到一个错误:
违反主键约束“PK_AthleteParent”。无法在对象“dbo.AthleteParent”中插入重复键。重复键值为 (31, 1)
据我所知,当实体尝试更新我的 Athlete 时,它会尝试将新行插入到连接表中,即使父母已经存在于连接表中。有没有办法让实体在关系更新时删除任何记录?或者有没有办法告诉实体更新加入表以匹配传入的运动员对象?
c# - 更改生成的联接表的名称(多对多)-EF Core 5
如何更改 EF Core 5 创建的连接表的名称?
例如
以及这两个名为 FoodMenu 的实体的连接表,我想将其更改为其他内容。
c# - EF Core:我可以在我的实体中将可为空的 SQL 类型映射到不可为空的值类型吗?
我有一个映射到以下实体的 SQL VIEW:
我像dbContext.MyView.ToArrayAsync()
ordbContext.MyView.Where(e => e.Count > 0)
等一样使用它。
该视图在生产中的 Count 列中返回 NULL,并且在评估查询时我得到 NullReferenceExeption。
我可以配置映射以便将 NULL 值映射到default(int)
resp0
吗?
我尝试使用可为空的支持字段private int? _count
,但仍然出现异常。要求是,除了实体本身或映射之外,我不想更改 SQL 视图或我的代码。
c# - 在 EF Core 5 中保存相关数据(多对多)而不获取实际记录
我正在为午餐预订创建一个网络应用程序。
一切都很好,但是当我想创建一个可以包含 1 种或更多食物的菜单时出现错误。
这是我创建菜单的 Dto
并且此代码不适用于保存。
但是为了节省食物,这段代码可以工作,但我不想从数据库中获取食物来制作菜单。
在不从数据库中获取实际食物的情况下,如何将菜单保存到数据库中?
.net-core - 具有单个导航属性的多个(可选)一对一关系
我正在尝试配置两个实体之间的关系,其中父级可以具有来自同一类型的多个(命名)子级,而子级应该只有一个通用父级。基于博客/帖子示例,我正在尝试配置以下内容。博客帖子不是一个很好的例子,但在我的应用程序中,我有 5 个固定的子实体。
我试图这样配置:
在我的现实世界问题中,帖子也不需要属于博客,并且所有外键都是复合键,但这应该没问题。
像这样配置 FirstPost 和 SecondPost 可以识别,但 Post.Blog/Post.BlogId 始终为空。
任何想法如何解决这个问题?