问题标签 [entity-framework-plus]

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 回答
111 浏览

entity-framework - Entity Framework Plus - foreach 循环中的 FutureValue()

最近我开始在我们的项目中使用EF+,并取得了巨大的成功,但有时我会遇到一个问题,即我有一组实体需要运行单独的查询。

因此,如果我有一组 20 个客户,我需要分别运行 20 个查询。我想知道是否有办法在 foreach 循环中以某种方式使用 EF+ FutureValue() 来避免这种情况。

请参阅此示例代码:

0 投票
1 回答
1333 浏览

entity-framework-core - ef core plus:ArgumentNullException:值不能为空。参数名称:属性

使用 ef core plus,我正在尝试更新模型上的一组行:

在这里,我得到以下异常:

ArgumentNullException:值不能为空。参数名称:Check.cs 第 21 行中的属性 Npgsql.EntityFrameworkCore.PostgreSQL.Utilities.Check.NotNull(T value, string parameterName)

TargetInvocationException:调用的目标已引发异常。System.RuntimeMethodHandle.InvokeMethod(object target, object[] arguments, Signature sig, bool constructor, bool wrapException

当我只用 ef core 加载数据时,它会加载我期望的 1 行

数据库模型没什么花哨的,但是太大了,无法在此处发布。我正在广泛使用 [Required],并且有很多一对多关系。

(顺便说一句,user.Id 不为 null 且可用,并且 deletedUser 在代码和数据库中也可用。)

应该如何解释这个错误?我究竟做错了什么?

谢谢你的帮助!

0 投票
1 回答
933 浏览

entity-framework-6 - IncludeFilter 多个级别不起作用

此 IncludeFilter 存在问题并包含多个级别。我正在使用实体框架 6 Plus。

这是他们在标题下提供的示例https://entityframework-plus.net/query-include-filter 。Load multiple levels

这可行,但它返回的保修记录比我想要的要多。

这有效但.Coverage为空,但它是最接近示例的。

这根本不起作用,因为显然IncludeFilter你必须包含一个 where 子句

这一个有效,但它并不急于加载 Coverage

0 投票
3 回答
512 浏览

entity-framework-6 - 获取使用 Entity Framework Plus 生成的 SQL 查询?

几个小时以来,我一直在享受Entity Framework Plus的功能而不是 Entity Framework 6,尤其是它的IncludeFilter

使用常规的 Entity Framework 6,我可以简单地调用 IQueryable 上的 ToString() 来轻松获取将在 DB 服务器上实际处理的 SELECT 查询。

但是使用 EF+,当我应用 IncludeFilter 时,我只会得到:

因为ToString()在 EF+ 中似乎没有以同样的方式重载。

有没有办法为“IncludeFilter”查询以及经典查询生成 SQL?

我知道我可以使用适当的分析工具在 SQL 服务器本身上获取它,但我希望能够在 EF 的代码端完成它。

0 投票
1 回答
884 浏览

entity-framework-plus - Entity Framework Plus - 使用 IncludeFilter 和 Include

我阅读了文档,发现使用 IncludeFilter 时的限制是我不能将它与 EF Include 结合使用。有没有人遇到过这种情况,他们使用 IncludeFilter 但需要加载最初由 EF Include 处理的导航属性?加载附加导航属性的最佳方式是什么?

https://entityframework-plus.net/query-include-filter

0 投票
1 回答
207 浏览

c# - 如何拦截和修改批量更新?

在我的代码中的几个地方,我正在使用方便的花花公子Z.EntityFramework.Plus扩展进行批量更新,例如

这将更新所有Foo记录SomeCondition为真,设置Field1为“栏”,Field2并将增加一。

现在出现了一个新要求,其中一些表(但不是全部)正在跟踪ModifiedDate。这包括我正在进行批量更新的记录。

所以我的方法是这样的。我有一个界面:

所以我所有的跟踪类都ModifiedDate可以实现ITrackModifiedDate。然后,我编写了一个中间人扩展来拦截.UpdateAsync()调用:

如您所见,除了已经更新的任何其他字段之外,我不完全确定如何修改为updateFactoryset 。ModifiedDateDateTime.UtcNow

怎么做?

更新:我不反对更改我的扩展名,以便它只接受Ttype ITrackModifiedDate,如果有帮助的话,即

0 投票
1 回答
380 浏览

postgresql - 如何使用实体框架扩展库批量更新 jsonb 字段?

我将 PostgreSQL 与 EntityFrameworkCore 一起使用。我需要批量更新jsonb字段。Z.EntityFramework 包看起来很有希望,但它们都不适合我。

我使用 EntityTypeBuilder 设置 jsonb 字段:

并使用 ColumnAttribute:

它适用于定期更新实践。但是,当我尝试使用下一个包批量更新字段时:

使用下一个代码:

它们都不适合我。我收到下一个例外:对于 EF-Plus:

对于 EF-Classic 和 EF-Extensions:

难道我做错了什么?

0 投票
2 回答
503 浏览

entity-framework - AspNetCore 2.1 IdentityDbContext:如何获取当前用户名

在我目前工作的项目中,我需要审核对许多数据库表的更改。为此,我正在考虑使用 nuget Z.EntityFramework.Plus.Audit.EFCore。我一直在尝试,它似乎最适合我的需求。我一直在关注这里的文档。

可以像这样在我的控制器中保存审计条目:

但如果我以这种方式这样做,那就违反了 DRY 原则。有一种方法可以覆盖 SaveChanges() 和 SaveChagesAsync() 函数,而且效果很好。这样的事情是这样完成的:

现在这是一个更好的选择,非常干燥且更易于维护。问题是,如何获取当前用户名,以便我可以做类似的事情

在控制器中,您可以使用指令

但这在 IdentityDbContext 中不可用。我确实尝试过注入 UserManager,但它没有可能起作用的功能。

tl;博士; 当我使用 JWT 令牌时,如何在 IdentityDbContext 中获取当前用户名?

0 投票
1 回答
203 浏览

c# - 使用 EF Plus IncludeFilter 获取“无法创建接口实例”错误

拥有一个IList<Guid>,我希望从上下文中找到所有匹配项,然后包含一些相关的表,其中不包括过时的数据。由于数据的大小,我尝试使用 EF Plus IncludeFilter,以避免将所有内容加载到内存并在那里执行过滤。当我调用ToListAsync()查询时会出现问题。IncludeFilter (据我所知)然后引发System.MissingMethodException : Cannot create an instance of an interface异常。

该项目在 .NET Core 2.2 中完成,我使用 Z.EntityFramework.Plus.EFCore 2.0.7

示例项目

此示例重现了该问题:https ://dotnetfiddle.net/MYukHp

数据结构

数据库结构以 Facts 表为中心,该表包含一个不可变的 Guid,用于标识每个条目。所有其他表中的条目都链接到此 guid 以绑定到单个条目。其他表包含一个DateTime ValidTo用于跟踪更改。没有条目被更新或删除。相反,在更改时使用 生成新条目ValidTo = DateTime.MaxValue,并且正在更新的条目将其ValidTo设置为DateTime.Now。这可确保所有更改都保留在历史上。

随着时间的推移,绝大多数数据将是历史数据,因此我们可以在 SQL 查询中将其过滤掉是至关重要的。

Fact-table 的数据结构如下:

所有其他表都继承自 ModelBase,将它们链接到 Fact 表。

人员和患者的示例表

将参数更改为 IQueryable 会产生一个新错误: System.InvalidCastException : Unable to cast object of type System.Guid' to type 'System.String'

调用序列

调用序列相当复杂,但我们从声明调用参数开始简化IQueryable<FactModel> facts。这是通过仅添加用户登录公司的患者来过滤的。然后应用搜索词。最后,在调用AssignDataToPatientByFactId.

所以AssignDataToPatientByFactId获取一个 guid 列表,在 Facts 表中找到所有匹配项,然后添加ValidTo时间戳为 Max 的其他表中的条目。因此,不应包括所有其他条目。

将代码分成几个语句表明 IncludeFilter 似乎正在工作,但调用 ToListAsync 会产生错误。

0 投票
1 回答
125 浏览

entity-framework - 如何使用 Z.EntityFramework 过滤和包含子项

下面的查询使用 Z.EntityFramework.Plus.EF6 过滤子项。它的过滤并AssetXref正确包含实体,但结果不能包含Child.Parent实体关系

我也试过