问题标签 [ef-fluent-api]

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

c# - 如何在 Entity Framework 中为同一个表配置导航属性?

如何使用流畅的配置来配置实体框架,使其行为方式与使用属性相同:

0 投票
2 回答
1928 浏览

c# - 用于一对一识别关系的实体框架代码优先流利 API 配置

我有以下类结构:

在此处输入图像描述

如何配置 Fluent API 以将识别关系放入 Cards 表中?

我是说

  • 卡片表 PK:Id、CustomerId
  • 卡片表 FK:CustomerId

当我为 Customer.Card 属性分配新卡时,我希望删除以前的卡。

所以我这样定义我的类:

DbContext 看起来像这样:

这是测试:

它根本不起作用。我在第二次保存时有这个,我不知道如何在这里指定识别关系:

未处理的异常:System.Data.Entity.Infrastructure.DbUpdateException:保存不为其关系公开外键属性的实体时发生错误或发生。EntityEntries 属性将返回 null,因为无法将单个实体标识为异常源。通过在实体类型中公开外键属性,可以更轻松地在保存时处理异常离子。有关详细信息,请参阅 InnerException。---> System.Data.Entity.Core.UpdateException:来自“Customer_Card”关联集的关系处于“已删除”状态。给定多重约束,相应的“Customer_Card _Target”也必须处于“已删除”状态。

更新很容易让它适用于一对多的关系。您可以在下面找到一个完整的示例:

0 投票
1 回答
412 浏览

c# - 使用 EF Fluent API 映射我的实体关系时,是否需要同时映射所涉及的两个实体?

我正在按照本教程中的说明使用 Code First 和 EF Fluent API 创建实体关系,以在我的模型中创建 1:n 和 m:n 关系。

我想知道并且没有找到响应搜索的是,是否需要定义它两端的关系。

我的意思是,如果我有一个名为 User 和 Organization 的实体,则有两个关系涉及这两个实体,如下所述:

  • 一个用户可以有多个组织,而一个组织必须由一个用户拥有。
  • 一个用户可能存在于许多组织中,而一个组织中可能有许多用户。

考虑到这一点,我使用 Fluent API 定义了如下关系:

但是这些定义足够了吗?或者我是否也必须定义实体另一端的关系?我的意思是,我需要添加以下代码吗?

0 投票
2 回答
583 浏览

c# - 当一个实体与另一个实体有多个 0..1:n 关系时,如何使用 Fluent API 定义它们?

我正在开发 Azure 移动服务,在我的模型中,我有一个实体Message,它在以下语句之后与自身相关:

  • 一个消息可能有一个父消息,一个消息可能是许多消息的父消息

我的班级定义如下:

我的 DTO 是这样的:

我使用 AutoMapper 映射这两个类,如下所示:

我的 Fluent API 配置是:

但是当我尝试插入新消息时,出现以下错误:

操作失败并出现以下错误:“MobileServiceContext.Messages”中的实体参与“Message_CreatedBy”关系。找到 0 个相关的“Message_CreatedBy_Target”。1 'Message_CreatedBy_Target' 是预期的。

从这个错误中,我了解到我的Message期望有一个Parent,但是由于这将是第一条Message,所以没有Parent,也不是每个Message都会有一个父级。在我的Fluent API配置中,我根据需要定义了Parent属性,因为当我将其设置为可选时,在尝试插入消息时出现以下错误:

在模型生成过程中检测到一个或多个验证错误:FollowAppApi.Models.Message_Parent: : 多重性与关系“Message_Parent”中角色“Message_Parent_Target”中的引用约束冲突。因为从属角色中的所有属性都不可为空,所以主体角色的多重性必须为“1”。

我发送到端点的 JSON 如下:

如何设置我的配置以在这种情况下或任何其他应存在选项属性的情况下定义可选属性?

编辑 1

所以我在处理一个实体与另一个实体有两个关系的情况时检查并阅读了这个,我添加了 InverseProperty 注释并得到以下错误:

操作失败并出现以下错误:“无法确定相关操作的有效排序。由于外键约束、模型要求或存储生成的值,可能存在依赖关系。

据我记得,这个错误是指存在一个循环引用,我猜它来自 Parent 属性或者可能是 User 与 Message 的关系,但我不太确定。

这个错误的原因是什么?

0 投票
1 回答
406 浏览

c# - C# - EF 6 多个表到一个 FK

我正在使用 Code First/Fluent API 设计一个数据库并面临这个问题:

如何映射可以引用不同表的 FK?

这是场景:

我有一个具有 5 级层次结构的科目表。

从上到下(一对多:Acc1 可以有多个 Acc2 以此类推,Acc2 必须有一个 Acc1):

帐户 1 -> 帐户 2 -> 帐户 3 -> 帐户 4 -> 帐户 5

示例:供应商可以在任何科目表中:1 或 2 或 3 或 4 或 5。(这是商业自动化中的规则)。

如何使用流利的 API 进行处理?

数据库模型

0 投票
2 回答
1874 浏览

c# - 当其中一个是身份时的实体框架复合主键

我在一个类中映射了一个复合键,如下所示:

但是,这里的 A 应该是一个身份。

但是,当我尝试添加一个值为 A(null,因为它是一个身份)和 B 的对象时,我得到一个主键违规。

有没有办法解决这个问题?

类型如下:

来自数据库世界:

0 投票
2 回答
1110 浏览

entity-framework - 更新数据库时应用程序用户 ID 的外键抛出键错误

我首先使用代码创建一个外键YogaSpace,将ApplicationUsersid 链接到ApplicationUserRefId类中YogaSpace。因此,每次我创建并插入一个新YogaSpace的时,它都会用登录人的 id 填充ApplicationUserid。我希望它是一对多的,其中一个id的YogaSpace对象可以是多个。ApplicationUser但我遇到了关键错误。

这是我的ApplicationUser

以下是所有错误。更新数据库时,它会抛出与键相关的问题。

在模型生成期间检测到一个或多个验证错误:

GiftExchange.DataLayer.Models.IdentityUserLogin: : EntityType 'IdentityUserLogin' >没有定义键。定义此 EntityType 的键。GiftExchange.DataLayer.Models.IdentityUserRole: : EntityType 'IdentityUserRole' >没有定义键。定义此 EntityType 的键。

更新!我尝试覆盖它要求我为其创建密钥的类,但它仍然不起作用

我尝试使用在此链接中找到的流利的 api 添加密钥 [实体类型 MVC5 EF6 中的用户

在我的YogaSpaceContext我包括

它似乎从包管理器中删除了用于更新数据库的无键定义错误。但是我将如何首先在代码中实现它?

0 投票
2 回答
12471 浏览

c# - 一对一或零对一实体框架代码优先 FluentApi

  1. 我需要创建 fluentapi 一对一或零对一引用,并在两个实体上都具有导航属性。
  2. EntityTwo 应该包含简单的属性来存储外键 (EntityOneId)

    /li>

更复杂的场景:

0 投票
4 回答
15505 浏览

c# - 为最小 int 值设置约束

我正在使用存储库模式。我有一个名为 Product 的实体,我想设置价格的最小值以避免零价格。是否可以在 EntitytypeConfiguration 类中创建它?

我的产品配置类

0 投票
1 回答
484 浏览

c# - 一对零或一关系实体框架

我正在尝试使用代码优先/流利的 api 来强制执行一对(零或一)表关系,并且预期的表如下。

学生可能只有一个联系人 (StudentContact) 或没有但每个联系人 (StudentContact) 必须有一个学生

我试着用

但不幸的是,它并没有强制 StudentID 列的一个关系,这意味着 StudentID 列可能包含重复值。

参考:实体框架代码中的一对零/一关系优先