问题标签 [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.
entity-framework - Entity Framework Plus - foreach 循环中的 FutureValue()
最近我开始在我们的项目中使用EF+,并取得了巨大的成功,但有时我会遇到一个问题,即我有一组实体需要运行单独的查询。
因此,如果我有一组 20 个客户,我需要分别运行 20 个查询。我想知道是否有办法在 foreach 循环中以某种方式使用 EF+ FutureValue() 来避免这种情况。
请参阅此示例代码:
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 在代码和数据库中也可用。)
应该如何解释这个错误?我究竟做错了什么?
谢谢你的帮助!
entity-framework-6 - IncludeFilter 多个级别不起作用
此 IncludeFilter 存在问题并包含多个级别。我正在使用实体框架 6 Plus。
这是他们在标题下提供的示例https://entityframework-plus.net/query-include-filter 。Load multiple levels
这可行,但它返回的保修记录比我想要的要多。
这有效但.Coverage
为空,但它是最接近示例的。
这根本不起作用,因为显然IncludeFilter
你必须包含一个 where 子句
这一个有效,但它并不急于加载 Coverage
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 的代码端完成它。
entity-framework-plus - Entity Framework Plus - 使用 IncludeFilter 和 Include
我阅读了文档,发现使用 IncludeFilter 时的限制是我不能将它与 EF Include 结合使用。有没有人遇到过这种情况,他们使用 IncludeFilter 但需要加载最初由 EF Include 处理的导航属性?加载附加导航属性的最佳方式是什么?
c# - 如何拦截和修改批量更新?
在我的代码中的几个地方,我正在使用方便的花花公子Z.EntityFramework.Plus
扩展进行批量更新,例如
这将更新所有Foo
记录SomeCondition
为真,设置Field1
为“栏”,Field2
并将增加一。
现在出现了一个新要求,其中一些表(但不是全部)正在跟踪ModifiedDate
。这包括我正在进行批量更新的记录。
所以我的方法是这样的。我有一个界面:
所以我所有的跟踪类都ModifiedDate
可以实现ITrackModifiedDate
。然后,我编写了一个中间人扩展来拦截.UpdateAsync()
调用:
如您所见,除了已经更新的任何其他字段之外,我不完全确定如何修改为updateFactory
set 。ModifiedDate
DateTime.UtcNow
怎么做?
更新:我不反对更改我的扩展名,以便它只接受T
type ITrackModifiedDate
,如果有帮助的话,即
postgresql - 如何使用实体框架扩展库批量更新 jsonb 字段?
我将 PostgreSQL 与 EntityFrameworkCore 一起使用。我需要批量更新jsonb
字段。Z.EntityFramework 包看起来很有希望,但它们都不适合我。
我使用 EntityTypeBuilder 设置 jsonb 字段:
并使用 ColumnAttribute:
它适用于定期更新实践。但是,当我尝试使用下一个包批量更新字段时:
使用下一个代码:
它们都不适合我。我收到下一个例外:对于 EF-Plus:
对于 EF-Classic 和 EF-Extensions:
难道我做错了什么?
entity-framework - AspNetCore 2.1 IdentityDbContext:如何获取当前用户名
在我目前工作的项目中,我需要审核对许多数据库表的更改。为此,我正在考虑使用 nuget Z.EntityFramework.Plus.Audit.EFCore。我一直在尝试,它似乎最适合我的需求。我一直在关注这里的文档。
可以像这样在我的控制器中保存审计条目:
但如果我以这种方式这样做,那就违反了 DRY 原则。有一种方法可以覆盖 SaveChanges() 和 SaveChagesAsync() 函数,而且效果很好。这样的事情是这样完成的:
现在这是一个更好的选择,非常干燥且更易于维护。问题是,如何获取当前用户名,以便我可以做类似的事情
在控制器中,您可以使用指令
但这在 IdentityDbContext 中不可用。我确实尝试过注入 UserManager,但它没有可能起作用的功能。
tl;博士; 当我使用 JWT 令牌时,如何在 IdentityDbContext 中获取当前用户名?
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 会产生错误。
entity-framework - 如何使用 Z.EntityFramework 过滤和包含子项
下面的查询使用 Z.EntityFramework.Plus.EF6 过滤子项。它的过滤并AssetXref
正确包含实体,但结果不能包含Child.Parent
实体关系
我也试过