问题标签 [ef-code-first-mapping]

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

entity-framework - EF 如何在没有迁移历史记录表的情况下检测模型更改

我正在使用实体框架代码首先迁移。我第一次没有启用迁移。当我运行该项目时,它会创建 _migrationhistory 表,其中包含一行。

然后我删除这个表并运行应用程序,它运行成功。现在我向实体添加了一个属性并尝试运行,但它没有运行并抱怨模型与数据库不兼容。

我的问题是 EF 和数据库如何知道模型已更改或数据库与没有 _migrationhistory 表或代码迁移的模型不同?

0 投票
1 回答
47 浏览

c# - 从实体 A 继承的实体 B(使用 MapInheritedProperties )打破了 A 和 C 的关系 - 实体框架代码优先

我的模型 Item、RegistroItem 和 ItemTienda 目前有 3 个实体:RegistroItem 是从 Item 继承的,而 ItemTienda 与 Item 具有一对多的关系。我使用 Fluent API 配置了 RegistrosItems 表,如下所示:

问题是,只要我输入该代码,我的实体 ItemTienda 就会停止跟踪与 Item 的关系,并且 Code First 不会将 Foreing 键规则添加到 SQL 表 ItemsTiendas。我已经尝试了很多东西,但都没有工作,你知道可能是什么问题吗?这是实体的定义:

0 投票
0 回答
328 浏览

entity-framework - EF Code First Migration - 为复杂类型属性命名列

我正在将现有的 EF 模型转换为首先使用代码。

它有许多复杂类型,具有特定的数据库字段命名约定:

例如,这个复杂类型:

在此实体中使用:

它出现在这样的数据库表中:

所以我需要更改复杂类型的默认命名约定。我可以像这样使用 Fluent 手动更新每个列名:

问题是它ContactDetails在整个数据库中的许多不同表中多次使用。所以我想一次性配置它们。我需要这样的东西:

但是如何填写这些{???}部分?在这种情况下,我可以从哪里获取属性名称和类型名称?

0 投票
1 回答
25082 浏览

c# - 如何使用 ASP.NET MVC 中的实体框架将记录插入具有外键的表中

我是实体框架代码优先的新手。这是我在 ASP.NET MVC 中的学习,使用代码优先创建数据库。

我有两节课:

我正在尝试向表中插入一条Student记录,该表有一个引用该表Student的外键。SubjectIdSubject

我正在尝试两种可能的方式:

第一种方法

在这里,我创建了一个新Subject实例,它具有SubjectId=202. 现在,当我创建Student对象并将值 202 分配给 时SubjectId,存在Insert语句冲突。虽然有Subjectwith SubjectId = 202,那为什么会有插入冲突呢?当我调试时,我看到导航属性Subjects在这里为空。我不明白这里的重点。

第二种方法:

但我得到一个空引用异常

对象引用未设置为对象的实例

为什么stu.Subjects这里是空的?

所以我的问题是:

  1. SubjectId课堂上是什么Student意思?即它的价值与什么有关?我们可以显式设置它,如果可以,它会引用Subject表的主键吗?如果不是,它是否仅用于 EF 代码约定目的?

  2. 同样:导航属性的作用是什么?为什么它为空,什么时候不为空?

我对导航属性的基本理解是,它是用来让EF判断两个实体之间的关系的。

任何人都可以通过示例澄清一下,我们将不胜感激。

0 投票
2 回答
471 浏览

c# - 多对多表的实体框架代码优先外键

我有这个场景:

然后我创建一个配置类来指定多对多表:

现在我必须创建一个Table3这样的

如何为列Table1CodeTable2Code表添加外键Table1_Table2

我不需要将外键添加到Table1and Table2but 到 table Table1_Table2

0 投票
0 回答
55 浏览

c# - 使用 Entity Framework 6.1 映射字符串集合

如何使用 EF6 Code First 将字符串集合映射到数据库。

这是我的场景。我有一个包含字符串集合的书籍类

我想将此集合映射到下表。我不希望将字符串序列化为单个字段,因为我想在数据库中查询它们。

我在某处读到 EF 不支持原始集合,但这看起来像一个简单的场景,我们现在使用的是版本 6。那么这是否可能,如果可以,我如何首先使用 EF6 代码来做到这一点?

0 投票
1 回答
3149 浏览

c# - 带有 EF Core 的时间戳/行版本列

我试图弄清楚我应该如何首先通过实体框架代码向 SQL Server 中的数据表添加Timestamp/rowversion列。

这是使用 EF Core V2.0。

我尝试了两种方法来实现这一点,第一种:

第二个通过 fluent API:

在我运行后的两种情况下Add-Migration,我都会得到以下信息:

我本来希望该RowVersion列是 typetimestamp并且它的nullable属性是false. 这是 EF Core 的限制还是我试图不正确地执行此操作?

0 投票
1 回答
823 浏览

c# - ef core 2 - 在表“Y”上引入 FOREIGN KEY 约束“X”可能会导致循环或多个级联路径

我知道,我知道,已经存在很多这样的问题,但我不知道如何在我的场景中解决这个问题。

我有一个客户,一个有卖家客户不一定是卖家,但所有卖家都是客户

在我的订单中,我有一个客户和一个卖家,但是卖家里面已经有一个客户

这是我的客户实体

我的卖家实体

我的订单实体

我的订单地图

我已经添加了迁移,但是当我设置“更新数据库”时,我收到此错误消息:
在表“订单”上引入外键约束“FK_Order_Seller_SellerId”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。无法创建约束或索引。请参阅以前的错误。

这是一个 .netcore2.0 项目,我正在使用 ef-core 2

0 投票
1 回答
643 浏览

c# - 在单个语句中为多个列设置默认值

我正在使用 EF Core Code-First,需要为多个列设置默认值。

我知道这是为一列设置默认值的语句

我有 10 个具有不同默认值的字段,想看看是否有一种简单的方法可以一次性设置所有默认值,而不是重复上述代码 10 次。

0 投票
0 回答
343 浏览

c# - 实体容器中未定义实体集或函数导入“My_Table”

我首先使用代码,一个包含大约 60 个表的数据库,标题上的错误发生在 3 个表上,我不明白为什么......

我得到的例外是“实体集或函数导入'My_Table'未在实体容器'My_Context'中定义”

这是我的 bdset

这是我在 My_Table 的 My_Context 类中的唯一参考(包括区分大小写的检查)。

如果我将变量名称更改为其他任何名称,它就可以工作。例子:

我的模型创建被覆盖:

我找不到任何问题,有没有人知道我可能缺少什么?