问题标签 [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.

0 投票
1 回答
493 浏览

c# - 没有显式映射的 EF Core 5.0 多对多关系 - 如何连接两个表?

如您所知,在 EF Core 5.0 中,您无需显式映射表即可建立关系。问题是:既然你没有映射类了,你怎么能真正加入/过滤它们?

以截图为例:

EF 5.0 中的此代码(正确地)使用数据库中的正确 FK 自动生成名为 ProductCategory 的映射表,将 ProductId 和 CategoryId 链接在一起。此表映射在源代码中没有等效类。

现在我的问题是,如何在代码中没有映射类的情况下过滤这两个表的值?例如,如何表示以下假设查询:

选择所有产品 加入类别 [如何链接它们?] 产品可用且类别属于电子产品

提前致谢。

0 投票
1 回答
245 浏览

.net - 如何在 ASP.NET 上运行 EFCore Migrate 启动并重试?

所以我想在 Azure 应用服务首次启动时运行 EF 迁移。以下代码正常工作:

但是,由于数据库在 Azure 上作为无服务器实例运行,如果它当前暂停,则需要重试(因为第一次连接尝试失败)。

服务启动后,对于我已配置重试的请求,使用EnableRetryOnFailure- 按预期工作:

那么我可以使用类似的东西Program.Main()来处理应用服务启动迁移吗?

提前谢谢了!

0 投票
2 回答
8236 浏览

c# - 在同一个项目中同时使用 AddDbContextFactory() 和 AddDbContext() 扩展方法

我正在尝试使用EF Core 文档的 DbContext 配置部分中DbContextFactory讨论的新模式。

我已经DbContextFactory在我的 Blazor 应用程序中成功启动并运行,但我想保留DbContext直接注入实例的选项,以保持现有代码正常工作。

但是,当我尝试这样做时,出现以下错误:

System.AggregateException:无法构造某些服务(验证服务描述符“ServiceType:Microsoft.EntityFrameworkCore.IDbContextFactory 1[MyContext] Lifetime: Singleton ImplementationType: Microsoft.EntityFrameworkCore.Internal.DbContextFactory1[MyContext]”时出错:无法使用范围服务“Microsoft.EntityFrameworkCore.DbContextOptions 1[MyContext]' from singleton 'Microsoft.EntityFrameworkCore.IDbContextFactory1[MyContext]”。) ---> System.InvalidOperationException:验证服务描述符“ServiceType:Microsoft.EntityFrameworkCore.IDbContextFactory 1[MyContext] Lifetime: Singleton ImplementationType: Microsoft.EntityFrameworkCore.Internal.DbContextFactory1[MyContext]”时出错:无法使用范围服务“Microsoft.EntityFrameworkCore.DbContextOptions 1[MyContext]' from singleton 'Microsoft.EntityFrameworkCore.IDbContextFactory1[MyContext]”。---> System.InvalidOperationException:无法使用范围服务“Microsoft.EntityFrameworkCore.DbContextOptions 1[MyContext]' from singleton 'Microsoft.EntityFrameworkCore.IDbContextFactory1[MyContext]”。

我在试验时也设法得到了这个错误:

无法从根提供程序解析范围服务“Microsoft.EntityFrameworkCore.DbContextOptions`1[MyContext]”。

理论上可以同时使用AddDbContextAddDbContextFactory

0 投票
1 回答
263 浏览

entity-framework-core - EF Core 5:必须是可简化节点

从 ef core 3.1 迁移到 ef core 5 后,在返回 IntersectList 时执行以下代码时遇到此错误

System.ArgumentException: '必须是可约节点'

我应该修复什么?

0 投票
1 回答
704 浏览

entity-framework - EF Core 5 为某些实体添加了影子备用键但不使用该属性

更新:下面列出的示例代码现已完成,足以在会议中生成影子备用密钥。当会议实体从包含 RowVersion 属性的基本实体继承时,会在会议实体中生成影子备用键。如果该属性直接包含在会议实体中,没有继承,则不会生成影子备用键。


我的模型在 EF Core 3.1 中按预期工作。我升级到 .Net 5 和 EF Core 5,EF 将名为 TempId 的影子备用键属性添加到多个实体。除非我将这些属性添加到数据库中,否则 EF 无法加载这些实体。我可以在模型中找到的任何关系中都没有使用阴影备用键属性。几乎所有关于影子属性的讨论都是针对外键或隐藏属性。我找不到任何解释为什么 EF 会添加一个影子备用键,特别是如果它不使用该属性。有什么建议么?

获得影子备用键的实体之一是会议,它是一种关系中的子项和另一种关系中的父项。我有许多类似的实体没有得到影子备用键,我看不出它们之间有什么区别。

我使用主键的备用键循环识别所有影子属性和所有关系的模型实体。关系中不使用任何影子备用键。我确实看到了我专门使用备用键的两个定义的关系,所以我相信我的代码是正确的。

这是一个完整的简化 EF 上下文及其两个实体,它们演示了该问题。

这是我用来识别影子键的代码。

这是上下文初始化和处理代码。

我得到的输出是:EFShadow.Conference.TempId: Property: Conference.TempId (no field, int) Shadow Required AlternateKey AfterSave:Throw。

没有关系使用此备用键。

如果我消除了会议实体从 BaseEntity 的继承并直接在会议中包含 RowVersion 时间戳属性,则不会生成影子键。这是产生差异所需的唯一更改。

0 投票
1 回答
3227 浏览

c# - Entity Framework Core 多对多更改导航属性名称

我有一个名为“LogBookSystemUsers”的表,我想在 EF Core 5 中设置多对多的功能。我几乎可以让它工作,但问题是我的 ID 列被命名SystemUserIdLogBookId但是当 EF 进行连接时,它尝试使用SystemUserIDLogBookID. 这是我当前的配置代码:

我试过这个:

但这只是添加了两个新列,而不是设置当前列的名称。

这首先是所有数据库。我不想为多对多表使用一个类,因为我在我的项目中完成了这一切,我不希望一堆无用的类四处飘荡。有任何想法吗?

0 投票
1 回答
4043 浏览

c# - 使用 EntityFrameworkCore 5 将 C# 9 记录映射为值对象

我正在尝试将record类型用作 ac# 类中的值对象,但是当我尝试使用 efcore 5 映射这些类型时,它会引发异常。

我的课程:

主要对象:

我有另一个record以下代码:

我正在使用 fluent api 使用以下代码将属性映射到表结构:

我正在使用该方法确保在启动类上创建数据库,但是当我尝试启动应用程序时,实体框架无法理解我的记录对象。

这是我的堆栈跟踪:

有人知道如何解决这个问题吗?

0 投票
1 回答
164 浏览

c# - EntityFrameWork Core 5.0 尝试从不存在的原始查询中删除 dbset

我在我的 dbcontext 中为我的 Raw Queries 或 StoredProcs 创建了 DbSet,并modelBuilder.Entity<_Entity>().HasNoKey().ToView(null)在 OnModelCreating 下使用。我在我的控制器中使用它们,如下所示:

它曾经在 EF Core 3.1 上运行良好。我最近将我的解决方案升级到 5.0。现在,当我尝试进行添加迁移时,它第一次完成这项工作并且一切正常,但是没有进行任何更改,在更新数据库之后,当我再次运行添加迁移时,它会创建一个迁移并尝试删除这些不存在的实体。migrationBuilder.DropTable(name: "_RTable");

有什么方法可以防止 EF 删除这些不存在的“表”?

谢谢

0 投票
1 回答
54 浏览

c# - EF Core - 两个表中的 IdentityUser 映射

我在我的 Identity Server 项目中实现了 Identity,我在尝试将 IdentityUser 类映射到我已经存在的数据库配置时遇到了问题。

主要问题是 IdentityUser 属性在我的配置中分为两个表(主要是密码在另一个表中)。

我试图相应地创建我的课程:

我尝试了所有我能想到的配置,但无法将 IdentityUser 属性(如 PasswordHash 属性)映射到另一个表。

就目前而言,我的数据库上下文如下:

使用 ef core 查询时,我试图在UserMapping类中覆盖的属性链接到User类,除了AccessFailedCount(我不知道为什么)

有没有办法映射它?

希望我足够清楚,谢谢您的帮助!

0 投票
1 回答
249 浏览

sql-server-2016 - 内存优化表(EF 核心 5)不支持保存点

使用新功能 SavePoints 将 EF 核心版本 3.1 升级到 5(使用事务手册时自动创建)

我在 SQL Server 2016 中有一个名为“内容”的内存优化表。

当我调用“SaveChanges”命令时,系统会抛出异常“内存优化表不支持创建保存点”。如何关闭保存点?

注意:如果我使用 TransactionScope 则通过成功。

请给我处理这种情况的解决方案 https://docs.microsoft.com/en-us/ef/core/saving/transactions