问题标签 [ef-core-2.2]
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 中的左外连接后 group by 中的 Null 值
我有一个 linq 查询问题,我试图从中获取某些信息,但根本找不到问题所在。我的 ef 核心数据库中有工具、任务和 MN ToolTask 实体。此查询包括 2 个左外连接和最后的 group by。
即使我正在检查分组值是否不为空,我仍然会收到一条错误消息,例如“可为空的对象必须有一个值”。我在这里想念什么?
此外,似乎这个 linq 查询是在客户端评估的,我能做些什么来使其成为服务器端?当我由于某种原因在代码中没有“let maxDateV ...”行时,它一直是服务器端。
更新 1(实体类):
任务
工具任务
工具
每个实体类都有自己的配置类,但除了设置主键和支持字段的访问模式之外,没有什么大不了的。
.net-core - 自动生成类/文件/等,例如使用 T4 文件
我们有一个正在运行的应用程序,其中大部分是 CRUD 页面,这些页面是由几个 T4 文件创建的,并且工作正常,在文件生成后进行了一些小改动。
问题是,我们开始分析开始使用 net core 的可能性,问题是我在 EF-Core 上找不到任何 t4 文件,所以我想问一下是否有任何方法可以创建这些文件,我不知道,从上下文或类似的东西。
我找不到与此相关的任何内容,尽管我确实看到了这些 CSharpDbContextGenerator 和 CSharpEntityTypeGenerator ...
谢谢!
c# - 在 EF Core 2.2 的控制器外部访问 DBContext
我想在控制器之外的另一个类(称为 FileWatcher)中访问数据库/dbContext。这个 Web 应用程序还使用 Hangfire 不断地监听目录中新创建的文件,它需要解析文件并将信息添加到数据库中。
所以我的 startup.cs 看起来像:
我的 FileWatcher 类:
我的 dbContext 文件:
如果信息不足,我深表歉意,如果需要/询问,我将提供更多信息。如果有人可以提供解决方案并且我的代码可以根据我的需要进行改进,我将不胜感激。
linq - EF Core - 许多查询发送到数据库进行子查询
使用 EF Core 2.2.2,我的数据库中有一个表,用于存储许多其他表的注释。换句话说,它有点像主从关系中的明细表,但有多个主表。考虑这个简化的 EF 模型:
在这种情况下,Notes 可以存储 Person 便笺或 Invoice 便笺(或 InvoiceItem 便笺,尽管我们只是说 UI 不支持它)。
我有这样设置的查询方法:
这些都按预期工作。现在,假设我将 InvoiceItems 添加到 Invoice 查询中,如下所示:
这也很好用,并且只发出几个查询。但是,以下内容:
针对 Invoice 表中的每个 Invoice 行向 Note 表发送一个单独的查询。因此,如果 Invoice 表中有 1,000 张发票,这相当于向数据库发送了 1,001 个查询。
似乎 Items 子查询没有相同的问题,因为 Invoices 和 Items 之间存在显式关系,而 Invoices 和 Notes 之间没有特定关系(因为并非所有注释都与发票相关)。
有没有办法重写最终查询,这样它就不会为表中的每张发票发送单独的注释查询?
c# - 将 SQL 中的空 DateTime 从 01.01.1900 转换为 C# 中的 null,反之亦然
我们的旧数据库将空日期值存储为 01.01.1900
我希望我的应用程序通过使用转换器在任何地方使用“null”作为空值。
但是文档说:
空值永远不会传递给值转换器。这使得转换的实现更容易,并允许它们在可空和不可空属性之间共享。
我的代码:
被翻译成:
我需要它自动翻译成类似的东西:
转换器中的空值是否有任何解决方法?
c# - EF Core 更新导航属性但 FK 隐藏属性未更新
这个自引用实体类在数据库中生成字段“ParentLocationId”(隐藏键)。
当我使用以下代码更新时添加..
Reference()
不起作用,因为我不想用Property()
我做错了什么来硬编码数据库字段。
PS。发送到此方法的位置尚未附加DBContext
。
c# - 如何在单元测试中忽略 SQL 重试策略?
我继承了 Microsoft 在 GitHub 中SqlServerRetryingExecutionStrategy
的代码示例,称为MySQLServerRetryPolicy
类
我在 中的ShouldRetryOn
覆盖方法中添加了一个取消MySQLServerRetryPolicy
标记,因此我可以通过按 Ctrl+C 来终止 NET.Core 控制台。这是下面的代码片段:
这是我的使用方法MySQLServerRetryPolicy
:
builder
上面的变量是DbContextOptionsBuilder
.
但是,在单元测试中,没有输出表明 SQl 重试策略是否永远运行。
问题:如何忽略或跳过单元测试中的 SQL 重试策略?
sql-server - SQL Server 在将数据插入复合聚集主键时强制将 nvarchar 转换为 int
我使用 EF Core 的 fluent API 创建了一个复合主键,它创建了这个表:
来自UserId
AspNetUsers 表,而 Article 是我设置的自定义表,它会自动生成它的 id。
脚手架的 Create Page 有一个下拉菜单,我将其替换为隐藏的文本框,它存储当前登录用户的 UserId 值,并在提交表单时提交。
但是在提交时,我抛出了一个 SQL 异常
SqlException:将 nvarchar 值 '57ed59a3-e2c9-4805-a57d-3d1ea7afed3f' 转换为数据类型 int 时转换失败。
57ed59a3-e2c9-4805-a57d-3d1ea7afed3f
是UserId
。_ 即使我尝试直接输入一个值,也会向我抛出同样的错误。
我什至尝试将其更改为非集群,因为它可能由于此处所述的第三个原因而发生冲突:https ://docs.microsoft.com/en-us/sql/relational-databases/indexes/create-clustered-indexes?view=sql -server-2017#Restrictions
但这并没有什么不同。谁能指出我可以做些什么来解决这个错误?
asp.net-core - 如何在 Entity Framework Core 中创建两个与同一实体的一对一关系
在 EF Core 2.2 中使用代码优先时,我遇到了困难。
我有一个名为:AirSensor 的实体,我需要与 TemperatureSensor 建立两个一对一的关系,因为 AirSensor 能够读取温度和露点温度。
因此我的代码在这里:
温度实体是:
当我添加迁移时,一切都很好,但是在更新数据库时它失败了:
执行 DbCommand 失败 (17ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
ALTER TABLE [AirSensors] 添加约束 [FK_AirSensors_TemperatureSensors_DewPointSensorId] 外键 ([DewPointSensorId]) 参考 [TemperatureSensors] ([TemperatureSensorId]) ON DELETE CASCADE; System.Data.SqlClient.SqlException (0x80131904): Si especifica la restrictción FOREIGN KEY 'FK_AirSensors_TemperatureSensors_DewPointSensorId' en la tabla 'AirSensors', podrían producirse ciclos o múltiples rutas en cascada。Especifique ON DELETE NO ACTION o UPDATE NO ACTION, o bien modifique otras restrictciones FOREIGN KEY。
但是,我没有看到这里的问题,我只想有两个单独的一对一关系。
我错过了什么?
提前谢谢了!