问题标签 [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 回答
867 浏览

c# - EF 6 Code First 一列未创建

我使用的是 EF 6 Code First,我不明白为什么没有为我的模型的属性创建一列。

这是第一堂课:

这是第二节课:

EF 不会为 Traduction 和 Original 创建 FK 列。(Traduction 表不包含 Original 的 FK 列,反之亦然)但它完美地创建了所有其他列和 FK。

我正在使用 Fluent API 来建立关系。我尝试过依赖自动约定,并明确配置与以下的关系:

但仍未创建列。

感谢您的帮助

更新

我不知道它是否有用,但我想添加一个信息,我的 Dbset 在上下文类中定义如下:

“Originaux”如果是“Originals”的法语复数。但是我注意到 EF 创建的表被命名为“Originals”,并且不遵循 DbSet 的名称。我不知道,也许这可能是问题的原因。

0 投票
1 回答
993 浏览

c# - 实体框架 6 - 上下文返回的列表的某些对象具有空属性

我正在检索这样的实体列表:

这是模型:

这是第二节课:

我得到 4 个实体 - 这很好 - 但是我检索到的一些对象的属性之一是 null - Original。在 4 个对象中的 3 个中,Original 属性为空,但此属性在第 4 个中正确填充。我已经直接检查了数据库并且主键/ FK是一致的。

你怎么看待这件事?我不明白,因为通常如果出现问题,对于所有检索到的对象,此属性都应为 null,但此处为其中一个对象正确填充了该属性。

谢谢

0 投票
2 回答
96 浏览

c# - Fluent Api - 具有两个 1:M 属性的 M:M 关系。如何?

我有这个模型。一名运动员有多项锻炼和多项训练计划。锻炼可以在许多训练计划中。一天可以进行多次锻炼,这就是为什么我需要 M:M 关系中的额外字段 DateToPerform 的原因。我怎样才能做到这一点,这是我的模型:

因为我需要额外的字段,所以我在 SO 中读到我应该向 Entity 提升关系,这就是我结束这样做的方式:

现在使用流利的 API 我这样定义所有这些:

当我运行应用程序时,我收到以下错误:

在表“TrainingPlanWorkouts”上引入 FOREIGN KEY 约束“FK_dbo.TrainingPlanWorkouts_dbo.Workouts_Workout_Id”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。

我想我把事情复杂化了,完成这种情况的最佳方法是什么?

谢谢。

0 投票
1 回答
3527 浏览

c# - 代码优先外键 - 多重性在角色中无效

我的模型如下:

第二类(需要一对一的关系)所以设置外键

这里是三等。同上,需要一对一关系外键。

我收到以下错误。

在模型生成过程中检测到一个或多个验证错误:\tSystem.Data.Entity.Edm.EdmAssociationEnd: : 多重性在关系“Form2_Form1”中的角色“Form2_Form1_Source”中无效。因为从属角色属性不是关键属性,所以从属角色的多重性的上限必须是' '。*

我在这里做错了什么?

看来我被这件事打动了。!!也许数据库优先方法更好。

0 投票
2 回答
121 浏览

entity-framework - 实体框架 - Fluent API 1 到 0.1 版主/人

我在迁移中收到此错误:

Person_EventModerator_Target::多重性在关系“Person_EventModerator”中的角色“Person_EventModerator_Target”中无效。因为从属角色属性不是关键属性,所以从属角色的多重性的上限必须是“*”。

这是我的模型(注意:基本实体拥有所有模型的主键):

我的映射:

这是 1 比 0.1 的关系。

谁能指出我的错误?

0 投票
1 回答
94 浏览

entity-framework - 实体框架代码优先 Fluent API 一对多

我有一个 ProductRequests 表。它与 ProductRequestDepartments 具有一对一的关系。哪个工作正常。我想链接 ProductRequestDetails (它将具有 ProductRequests 的实际产品(1 个或多个)。

如何在 Fluent API 中连接它。到目前为止我试过

ProductRequests -> ProductRequestDepartments 工作正常 (1 : 1) ProductRequests -> ProductRequestDetail 不工作 (1: N)

我越来越

在模型生成期间检测到一个或多个验证错误:“WP__ProductRequests_ProductRequestDetails_Source: : Multiplicity is not valid in Role 'WP__ProductRequests_ProductRequestDetails_Source' in relationship 'WP__ProductRequests_ProductRequestDetails'. 因为从属角色指的是关键属性,所以从属角色的多重性的上限必须为“1”。

0 投票
1 回答
100 浏览

c# - 删除代码优先级联 - 一对零或一

我有一个名为Items的实体,然后我有几个实体具有该表键ItemId的外键(NOT NULLABLE)

然后我有另一个名为Soldiers的表,它也依赖于Items,但在这种情况下,它是一个(NULLABLE)外键。

当我删除Items表中的项目时,我收到有关Soldiers表中存在的项目的错误。如果我没有带物品的士兵,我不会收到错误消息,并且所有其他表都已正确级联删除。

我想我必须在 Fluent API 上放一些东西才能在这张桌子上级联删除,但我不知道该怎么做。

谢谢

0 投票
1 回答
4453 浏览

c# - 使用部分类扩展 Entity framework 5 实体并将其映射到现有的其他实体

我还没有看到有人提出过这样的问题。因此,我为 EF fluent api 开发人员和 nopcommerce 插件开发人员创建了一个。

这是我正在尝试做的事情:

我有一个产品实体,EF 可以使用它来生成数据库。我想在不修改原始类的情况下扩展产品实体。所以,我一直在尝试使用部分类。这里的代码看起来像:

现在,当我像这样扩展类时:

它会抛出一个错误。

“Nop.Core.Domain.Catalog.Product”类型和“Nop.Core.Domain.Catalog.Product”类型都具有相同的简单名称“Product”,因此不能在同一模型中使用。给定模型中的所有类型都必须具有唯一的简单名称。在 Code First fluent API 中使用“NotMappedAttribute”或调用 Ignore 以从模型中显式排除属性或类型。

这是我的映射文件的样子:

有人可以帮忙吗?

0 投票
1 回答
231 浏览

c# - 无法将记录插入连接/查找/链接表 (EF/FluentAPI/MVC)

好吧,所以我现在有点卡住了。我们已经使用 EF、fluent api 等创建了一个 MVC 应用程序,目前我在将新记录导入连接表时遇到了一些麻烦。

数据库表结构

用户
(pk)ID
用户名
密码 哈希


DDRRole
(pk)ID
(fk)RoleId
(fk)DDRId

UserRole
(pk,fk)UserId
(pk,fk)DDRRoleId

角色
(pk)ID 名称

DDR
(pk)ID
名称

类结构

表的类是您期望的具有列的道具,例如 User 有一个ICollection<DDRRole> DDRRoleDDRRole 有一个ICollection<User> User

这是 fluent api 部分(不是全部,而是处理连接表的部分):

所以出了问题的是,当我们创建一个新用户时,这部分很好,但是当我们创建新用户时,我们想给该用户一个 DDRRole(已经在数据库中),然后它将被添加到用户角色表。我已经搜索了大量关于如何使用流利的 api 和其他东西做的事情,但还没有让它工作。

在此先感谢您的帮助

0 投票
1 回答
4066 浏览

c# - 实体框架 Fluent API 不考虑基类属性

英孚 6.1:

我们刚刚开始了一个有很多 pf 继承的项目。选定的继承数据库映射类型是每个层次结构的表。问题是,当尝试使用 add-migration 生成迁移时,会引发以下错误:

以下是使用的类和配置类:

我知道我们可以使用 [ForeignKey] 属性来告诉派生类的导航属性应该使用父抽象类中定义的列。我们希望避免使用 DataAnnotations。我只是不明白为什么它会抛出这个错误。“版本”导航属性是在 AbstractR 配置中定义的,而不是在 SER 配置中定义的(由于 SER 继承自 AbstractR,这也应该有效),对吗?

其次,在删除 Version 属性和映射时,SER 映射中使用的“ChildId”和“ParentId”属性也会出现同样的问题。这是一个已知问题吗?难道我做错了什么 ?

PS:为简单起见,已删除 ParentId 映射,因为它似乎与 ChildId 映射存在相同的问题。

有谁知道为什么会发生这种问题?


更新

经过更多研究,Fluent API 似乎无法使用基类属性进行映射。那正确吗 ?这是一种通缉行为吗?为什么 DataAnnotations 能够使用基类属性而不是 Fluent API?不是所有的基类属性都插入到每个类中,还是使用某种装饰器模式读取?