entity-framework-core 相关问题

实体框架(EF)Cor​​e是由Microsoft开发的开源ORM。

如何在不包含/加载整个集合的情况下获取实体框架模型中列表的计数?

我在 Entity Framework Core 中有一个模型,如下所示: 动漫公开课 { public int EpisodeCount { get { return Episodes.Count() } } 公共虚拟 ICollection 我在 Entity Framework Core 中有一个模型,如下所示: public class Anime { public int EpisodeCount { get { return Episodes.Count() } } public virtual ICollection<Episode> Episodes { get; set; } } 我遇到的问题是 EpisodeCount 为 0。目前的解决方案是在我的 EF 查询中运行 .Include(x => x.Episodes),但这会在不需要的地方加载整个剧集集合。这也增加了我的 HTTP 请求时间,从 100 毫秒增加到 700 毫秒,这不太好。 我不愿意为了简单的细节而牺牲时间,那么有没有一种解决方案可以让 EF 只查询剧集的 COUNT,而不加载整个集合? 有人建议我这样做 var animeList = context.Anime.ToPagedList(1, 20); animeList.ForEach(x => x.EpisodeCount = x.Episodes.Count()); return Json(animeList); 但这也会在 EpisodeCount 中返回 0,所以这不是一个可行的解决方案。 您需要将所需的数据投影到一个特殊的类(也称为 ViewModel、DTO 等)中。不幸的是(或不是?),为了避免 N + 1 次查询,投影不仅必须包含计数,还必须包含所有其他字段。 例如: 型号: public class Anime { public int Id { get; set; } public string Name { get; set; } // other properties... public virtual ICollection<Episode> Episodes { get; set; } } ViewModel / DTO: public class AnimeInfo { public int Id { get; set; } public string Name { get; set; } // other properties... public int EpisodeCount { get; set; } } 然后是以下代码: var animeList = db.Anime.Select(a => new AnimeInfo { Id = a.Id, Name = a.Name, EpisodeCount = a.Episodes.Count() }) .ToList(); 生成以下单个 SQL 查询: SELECT [a].[Id], [a].[Name], ( SELECT COUNT(*) FROM [Episode] AS [e] WHERE [a].[Id] = [e].[AnimeId] ) AS [EpisodeCount] FROM [Anime] AS [a] 感谢@ivan-stoev,这是一个很好的答案。但如果你想使用AutoMapper,你可以这样做: 型号: public class Anime { public string Id { get; set; } //... public ICollection<Episode> Episodes { get; set; } [NotMapped] public int EpisodesCount { get; set; } } 视图模型/DTO: public class AnimeDTO { public string Id { get; set; } //... public int EpisodesCount { get; set; } } 控制器/存储库: public async Task<IEnumerable<AnimeDTO>> Get() { var model = await DB.Animes.Select(x => new { Model = x, x.Episodes.Count }).ToListAsync(); model.ForEach(x => { x.Model.EpisodesCount = x.Count; }); return mapper.Map<List<AnimeDTO>>(model.Select(x => x.Model)); }

回答 2 投票 0

EF 核心 |添加相关实体 |数据库操作预计影响1行,实际影响0行

无法弄清楚为什么我会收到以下错误: { "title": "服务器错误", “状态”:500, "detail": "数据库操作是预期的...

回答 1 投票 0

ASP.NET Boilerplate EF 无法确定关系

我通过使用 MVC 从他们的网站下载最新的 aspnetboilerplate 解决方案开始了一个新项目。 一旦我将下面的代码添加到 WebDbContext,我也会收到下面的错误。即使没有...

回答 1 投票 0

EFCore 覆盖 SaveChangesAsync 不保存实体

公共覆盖任务SaveChangesAsync(CancellationToken取消令牌=默认) { foreach(base.ChangeTracker.Entries 中的 var 条目() .哪里(q => q.

回答 1 投票 0

如何在 AJAX Post 后重新加载创建视图?

我有两个模型类,电话和电话模型。 要创建新电话,必须选择电话模型。 我想在电话创建视图中添加一个模态来创建

回答 1 投票 0

如何向 Automapper 发送额外数据

我们有一个实体类型类,当它转换为 dto 类时,我希望通过额外的计算来设置一个属性。实体类: 公开课学生 { 公共 int Id { 得到;设置...

回答 1 投票 0

如何解决 .NET Core、EF Core 上的 DbContext 线程问题

EF Core 8.0、.NET 8 上出现线程问题,我遇到了这个问题,如何克服这个问题? 错误: 在上一个操作完成之前,已在此上下文实例上启动第二个操作。这通常是

回答 1 投票 0

即使忽略该行为,也能通过自动固定装置获得循环引用

我有以下测试方法,并且我使用 AutoFixture.Xunit2 进行测试。 [使用验证] 公共类 UpdateWorkspaceTests :TestBase { 私有只读夹具_fixture; 公开

回答 1 投票 0

EF core 8 使用属性指定一对多导航属性

我收到以下错误: 异常“无法确定导航“Stock.StockTransactions”表示的关系 我有这两门课: 公开课股票 { 公共整数

回答 1 投票 0

dotnet-ef:术语“dotnet-ef”不被识别为 cmdlet、函数、脚本文件或可操作程序的名称。检查拼写

dotnet core 8中出现以下错误可以通过以下步骤解决: 名称,或者如果包含路径,请验证路径是否正确,然后重试。 行:1 字符:1 + dotnet-ef + ~~~~~~~~~ +

回答 1 投票 0

异常'实体类型'PostEntity'需要定义主键

我是 .NET 的新手,请原谅我缺乏知识。 我正在尝试使用 Fast Endpoints 和 Ulid 作为实体和 Entity Framework Core 的 id 创建一个简单的 Web API。 这是我的代码: PostEntity.cs:...

回答 1 投票 0

.Net 6 工作者服务 EF 6 - 存储库 DI 无法使用作用域服务

我在带有 EF 6 的 .Net 6 辅助服务中具有以下文件夹结构, 解决方案文件(.sln) | |_ 数据(.csproj) | |_ 模型 | | |_ DatadbContext.cs | | | |_ 存储库 | |_ DbRepository....

回答 1 投票 0

模拟EF核心dbcontext和dbset

我正在使用 ASP.NET Core 2.2、EF Core 和 MOQ。当我运行测试时,我收到此错误: 消息:System.NotSupportedException:非虚拟(可在 VB 中重写)成员上的设置无效:x => x。

回答 7 投票 0

在 C# EF Core 中,如何连接两个 DbSets

在 DbContext 中的 IQueryable 属性中连接两个 DbSet 时出现异常。 我努力了: 公共 DbSet 组 { set;得到; } 公共 DbSet 聊天 { set;得到; } p...

回答 1 投票 0

Entity Framework Core 中的列名称无效

我正在开发一个使用 .NET 8、Entity Framework Core 和 SQL Server 的项目。我使用以下 SQL 脚本在数据库中创建了一个名为 Accounts 的表: 创建表 [dbo].[帐户] ( ...

回答 1 投票 0

.NET Core / Entity Framework Core:从 UserRoles 表中提取自定义字段

我自定义了 EF Core 身份模型,以获取有关 UserRole 关系的附加信息。 现在,我想提取用户登录后添加的自定义字段,这样我就可以传递...

回答 1 投票 0

实体框架核心迁移

所以我在 EF 中的迁移方面遇到了问题。我正在尝试熟悉一个较旧的 WPF 项目,并且我已经进行了一些重组。我将我的 Context 移动到一个具有共同点的类库......

回答 1 投票 0

Entity Framework Core - 使用 .Include 方法后可空外键和空引用对象

奇怪的是,即使对应的引用记录确实存在,引用对象也为空。以下是详细信息。 // 模型 公共类 ItemSoldPrice { 公共 int Id { 得到;放; }

回答 1 投票 0

EFCore相关实体未保存

我有一个 EFCore 设置,在类中我有一个导航属性。据我所知,我按照微软的示例进行操作,但我添加的实体并未保留。设置如下

回答 1 投票 0

如何在 Entity Framework Core 中结合使用自定义表前缀和 TPH?

免责声明:我对 C# / WPF / EFC 相对缺乏经验 我正在开发一个用 C# 编写的 WPF 应用程序,它需要在数据库中存储一些数据。为了存储这些数据,我想使用 Entity Fram...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.