问题标签 [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.
c# - 没有显式映射的 EF Core 5.0 多对多关系 - 如何连接两个表?
如您所知,在 EF Core 5.0 中,您无需显式映射表即可建立关系。问题是:既然你没有映射类了,你怎么能真正加入/过滤它们?
以截图为例:
EF 5.0 中的此代码(正确地)使用数据库中的正确 FK 自动生成名为 ProductCategory 的映射表,将 ProductId 和 CategoryId 链接在一起。此表映射在源代码中没有等效类。
现在我的问题是,如何在代码中没有映射类的情况下过滤这两个表的值?例如,如何表示以下假设查询:
选择所有产品 加入类别 [如何链接它们?] 产品可用且类别属于电子产品
提前致谢。
.net - 如何在 ASP.NET 上运行 EFCore Migrate 启动并重试?
所以我想在 Azure 应用服务首次启动时运行 EF 迁移。以下代码正常工作:
但是,由于数据库在 Azure 上作为无服务器实例运行,如果它当前暂停,则需要重试(因为第一次连接尝试失败)。
服务启动后,对于我已配置重试的请求,使用EnableRetryOnFailure
- 按预期工作:
那么我可以使用类似的东西Program.Main()
来处理应用服务启动迁移吗?
提前谢谢了!
c# - 在同一个项目中同时使用 AddDbContextFactory() 和 AddDbContext() 扩展方法
我正在尝试使用EF Core 文档的 DbContext 配置部分中DbContextFactory
讨论的新模式。
我已经DbContextFactory
在我的 Blazor 应用程序中成功启动并运行,但我想保留DbContext
直接注入实例的选项,以保持现有代码正常工作。
但是,当我尝试这样做时,出现以下错误:
System.AggregateException:无法构造某些服务(验证服务描述符“ServiceType:Microsoft.EntityFrameworkCore.IDbContextFactory
1[MyContext] Lifetime: Singleton ImplementationType: Microsoft.EntityFrameworkCore.Internal.DbContextFactory
1[MyContext]”时出错:无法使用范围服务“Microsoft.EntityFrameworkCore.DbContextOptions1[MyContext]' from singleton 'Microsoft.EntityFrameworkCore.IDbContextFactory
1[MyContext]”。) ---> System.InvalidOperationException:验证服务描述符“ServiceType:Microsoft.EntityFrameworkCore.IDbContextFactory1[MyContext] Lifetime: Singleton ImplementationType: Microsoft.EntityFrameworkCore.Internal.DbContextFactory
1[MyContext]”时出错:无法使用范围服务“Microsoft.EntityFrameworkCore.DbContextOptions1[MyContext]' from singleton 'Microsoft.EntityFrameworkCore.IDbContextFactory
1[MyContext]”。---> System.InvalidOperationException:无法使用范围服务“Microsoft.EntityFrameworkCore.DbContextOptions1[MyContext]' from singleton 'Microsoft.EntityFrameworkCore.IDbContextFactory
1[MyContext]”。
我在试验时也设法得到了这个错误:
无法从根提供程序解析范围服务“Microsoft.EntityFrameworkCore.DbContextOptions`1[MyContext]”。
理论上可以同时使用AddDbContext
吗AddDbContextFactory
?
entity-framework-core - EF Core 5:必须是可简化节点
从 ef core 3.1 迁移到 ef core 5 后,在返回 IntersectList 时执行以下代码时遇到此错误
System.ArgumentException: '必须是可约节点'
我应该修复什么?
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 时间戳属性,则不会生成影子键。这是产生差异所需的唯一更改。
c# - Entity Framework Core 多对多更改导航属性名称
我有一个名为“LogBookSystemUsers”的表,我想在 EF Core 5 中设置多对多的功能。我几乎可以让它工作,但问题是我的 ID 列被命名SystemUserId
,LogBookId
但是当 EF 进行连接时,它尝试使用SystemUserID
和LogBookID
. 这是我当前的配置代码:
我试过这个:
但这只是添加了两个新列,而不是设置当前列的名称。
这首先是所有数据库。我不想为多对多表使用一个类,因为我在我的项目中完成了这一切,我不希望一堆无用的类四处飘荡。有任何想法吗?
c# - 使用 EntityFrameworkCore 5 将 C# 9 记录映射为值对象
我正在尝试将record
类型用作 ac# 类中的值对象,但是当我尝试使用 efcore 5 映射这些类型时,它会引发异常。
我的课程:
主要对象:
我有另一个record
以下代码:
我正在使用 fluent api 使用以下代码将属性映射到表结构:
我正在使用该方法确保在启动类上创建数据库,但是当我尝试启动应用程序时,实体框架无法理解我的记录对象。
这是我的堆栈跟踪:
有人知道如何解决这个问题吗?
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 删除这些不存在的“表”?
谢谢
c# - EF Core - 两个表中的 IdentityUser 映射
我在我的 Identity Server 项目中实现了 Identity,我在尝试将 IdentityUser 类映射到我已经存在的数据库配置时遇到了问题。
主要问题是 IdentityUser 属性在我的配置中分为两个表(主要是密码在另一个表中)。
我试图相应地创建我的课程:
我尝试了所有我能想到的配置,但无法将 IdentityUser 属性(如 PasswordHash 属性)映射到另一个表。
就目前而言,我的数据库上下文如下:
使用 ef core 查询时,我试图在UserMapping
类中覆盖的属性链接到User
类,除了AccessFailedCount
(我不知道为什么)
有没有办法映射它?
希望我足够清楚,谢谢您的帮助!
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