问题标签 [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.

0 投票
2 回答
87 浏览

entity-framework-core - Entity Framework Core 5 - 递归结构错误

我正在尝试设置一个实体框架类,它有 4 个字段链接回相同类型的其他字段或为空。我的课看起来像这样:

如果我只有 NorthPatch 和 SouthPatch,这可以正常工作,但是一旦我添加第三个 EastPatch,我在尝试进行迁移时收到以下错误:

System.InvalidOperationException: Unable to determine the relationship represented by navigation 'Patch.NorthPatch' of type 'Patch'.

0 投票
1 回答
123 浏览

c# - “包含”操作中的表达式“y.Cases”无效

我有一对多的关系数据库。DbSetCompanies为“一”,DbSetCases为“多”。这是我的上下文和模型类:

数据库上下文

ParticipantCompany类继承自Participant类。

LegalCase类代表关系中的“许多”

现在这里是查询:

我试图明确地y转换为,ParticipantCompany因为这似乎是执行提示所暗示的:

要定位在派生类型上声明的导航,请使用强制转换 ('t => ((Derived)t).MyProperty') 或 'as' 运算符 ('t => (t as Derived).MyProperty')

但它会产生相同的异常:

0 投票
1 回答
841 浏览

c# - 关于 EF Core 中的“拥有”类型

在我的项目中,我使用 EF Core fluent 配置,代码优先。我读了一些关于拥有类型的信息,但下面的情况对我来说并不是很清楚:

假设我有一个Project实体和一个ProjectType.
我应该将该属性映射为:

Entity<Project>.HasOne<ProjectType>();或者更确切地说
Entity<Project>.OwnsOne<ProjectType>();

ProjectType实体应映射到表ProjectType(ProjectTypeId, Name, Description)

正如我所读,拥有的是

“只能出现在其他实体类型的导航属性上的类型。这些被称为自有实体类型。包含自有实体类型的实体是它的所有者。自有实体本质上是所有者的一部分,没有它就无法存在”

就我而言

ProjectType只能出现在Project实体类型的导航属性上。ProjectType本质上是 的一部分,Project没有它就不能存在”......但是,据我所知,为了创建一个单独的表,我需要使用HasOne,而不是OwnsOne......如果有人更好地解释这个想法,那就太好了。非常感谢。

0 投票
1 回答
40 浏览

c# - 将 2 个查询的结果添加到单个列表中,然后对其进行排序

在我的模型中,我有 2 个类:它们都继承自ParticipantCompany并具有 string property 。他们也都意识到这需要他们拥有ParticipantPersonParticipant.NameIParticipant.Name

这是模型本身:

}

我想要做的是查询所有Companys 和所有Persons,将结果合并到一个列表中,然后按.Name.

0 投票
1 回答
455 浏览

postgresql - 如何使用 PredicateBuilder、EF Core 5 和 Postgresql 10+ 执行不区分大小写和重音的 LIKE(子字符串)查询?

LIKE在 SQL Server 中,使用 EF Core 5 和 PredicateBuilder创建不区分大小写、不区分重音的查询相对简单。

例如:

  • 用户正在尝试使用标准北美键盘在数据库中查找客户(即重音输入有点痛苦)。
  • 搜索helene应该匹配Mme. Hélène Laurendeau。重要的是我们可以匹配一个子字符串,而不仅仅是一个前缀或后缀。

假设我们有一个Customer具有 property的实体Name,以下代码段将按预期工作:

我们如何在 PostgreSQL(10 或更高版本)中执行相同的查询?

我们刚刚从 SQL Server 进行了快速(基本上是 1:1)迁移,并正在尝试更新我们的代码以确保可以进行一般迁移。这个问题没有考虑到可能的查询速度问题(有关更多信息,请参阅链接。)

0 投票
1 回答
1093 浏览

c# - EF Core 5.0 - 更新 ASP.NET Core Web API 中的多对多实体

EF Core 5.0 引入了多对多关系。我被困在如何通过我的 asp .net api 更新它们。

对于一对一和一对多关系,有一个约定,只需添加属性名称后跟 ID。

所以一个合适的 POST 请求可能看起来像

但我不知道是否有约定或多对多关系的样子

是否有约定使用 EF 5.0 将 http 请求的主体映射到多对多关系?

0 投票
1 回答
56 浏览

c# - EF Core 5,如何定义多个“一对多”关系?

我正在创建一个自由任务管理应用程序。这是逻辑。这些是涉及的 3 个 POCO

用户(登录用户)

  1. 一个用户可以创建任意数量的客户端
  2. 用户可以创建任意数量的项目
  3. 一个用户由另一个用户创建,更新

客户(自由客户)

  1. 一个客户可以有任意数量的项目
  2. 客户端由用户创建、更新

项目

  1. 一个项目应该只有一个客户
  2. 项目由用户创建、更新

这些是我的实体。我正在使用 Code-First 方法并使用 SQLServer。我删除了许多要在此处发布的属性

用户实体

客户实体

项目实体

我现在面临着 ForginKeys 和映射的许多问题。这里的实体映射有什么问题?我无法在具有相同 CreatedById 的客户表中插入 2 行,EF 用唯一值限制它。

这是我的流利映射

我该如何实现这个要求?

0 投票
2 回答
170 浏览

c# - 自定义字段选项是领域驱动设计中的值对象还是实体

我正在使用 EF Core,并且我有一个场景,用户可以创建自定义字段,然后为该自定义字段创建选项。

CustomFieldOption 似乎是一个值对象,因为它包含的文本不需要 Id。但是就存储持久性而言,需要将 Id 存储在数据库中的不同表上,在该表中可以通过 Id 等进行查询...我不确定是否应将其添加为实体,因为 ValueObjects 没有 Id。
我遇到的另一个问题是验证。如果它是一个实体,我该如何验证 Text 属性。我知道对构造函数进行验证是一个坏主意。如果我在 ApplicationLayer 中验证它,那么无论我在哪里创建一个新对象,我都必须验证它是否为空且长度。如果我忘记在其中一个应用程序服务中添加验证并传递空文本,那么我会创建一个不一致的状态。

更新 #1
客户端可以选择自定义字段的一个或多个选项。我想这些需要存储在单独的表 ClientCustomFieldOptionValue 上。在那种情况下,这是一个实体还是一个值对象?那么CustomFieldOption呢。它会变成实体吗?我很困惑何时使用实体或值对象

0 投票
1 回答
248 浏览

c# - 配置实体时获取表名

EF Core:我需要将表的名称作为实体的名称,而不是 dbset,此外,我需要Id"tableName"+"Id".

我有一个DbSet<Country> Countries- 我需要表名CountryId列(从基本实体继承)是CountryId.

我从这个有效的代码开始:

但现在我切换到个人配置。

我有以下内容:

问题:如何获取TableName上面代码中配置的(不是实体名称)?

基类如下:

0 投票
1 回答
209 浏览

c# - EF 试图创建泛型类型表 (TEntity)

我从通用基类开始(ef-core,code-first)“按类”配置,如下所示:

add-migration进展顺利,但它update-database抱怨:

不能将表“TEntity”用于实体类型“Couche”,因为它正在用于实体类型“Affaire”和可能的其他实体类型,但没有链接关系。将外键添加到主键属性上的“Couche”,并指向映射到“TEntity”的另一个实体上的主键。

TEntityTEntity它是泛型类型占位符时,为什么要使用表' '?