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

c# - EF6 表拆分和异常“ReferentialConstraint 中的依赖属性映射到存储生成的列。列:'Id'。”

一段时间以来,我在我的领域设计中一直遵循Object Calisthenics中的“First Class Collections”规则。不过,为了避免创建无用的“集合”表,我使用了实体框架中的表拆分配置。

但是,如果出于某种原因,我有一个Parent除了其 Id 和子集合之外没有属性的类,我会得到异常:

InvalidOperationException:ReferentialConstraint 中的依赖属性映射到存储生成的列。列:'Id'。

奇怪的是数据库创建正确,我可以从中查询,但无法保存。

如果我只是简单地在 中添加另一个属性Parent,问题就消失了,这就更奇怪了。

我把它缩小到一个非常简单的测试用例:

程序.cs

领域

语境

配置

0 投票
1 回答
51 浏览

entity-framework-core - 没有关系的 EF Core 导航属性(外键)

我有三个班

现在我想创建导航属性:

  • 国家的名字
  • 语言.名称
  • 姓名.语言
  • 名称.国家

我想这样做有很多原因,其中之一是在一个表中搜索所有名称而不加入。

请不要建议其他方式,我想要导航属性为我的方式。

0 投票
0 回答
658 浏览

asp.net-core - 对于 CLR 类型为“Nullable”的属性“Identity.User.LockoutEnd”,找不到到关系类型的映射'

我想创建一个迁移来在我的数据库中创建一个新表,但是在执行之后Add-Migration MsSql_Add_ArticleCategory_Table,我得到了这个错误:

对于 CLR 类型为“Nullable”的属性“Alpha.Models.Identity.User.LockoutEnd”,找不到到关系类型的映射。

我该如何解决它(我在我的项目中使用了 asp.net core 3.1)?

PM> Add-Migration MsSql_Add_ArticleCategory_Table 构建开始...构建成功。Microsoft.EntityFrameworkCore.Model.Validation[30000] 没有为实体类型“Article”上的十进制列“RateCounter”指定类型。如果值不符合默认精度和比例,这将导致值被静默截断。使用“HasColumnType()”显式指定可以容纳所有值的 SQL 服务器列类型。Microsoft.EntityFrameworkCore.Model.Validation[30000] 没有为实体类型“Rating”的十进制列“Rate”指定类型。如果值不符合默认精度和比例,这将导致值被静默截断。使用“HasColumnType()”显式指定可以容纳所有值的 SQL 服务器列类型。Microsoft.EntityFrameworkCore.Infrastructure[10403] Entity Framework Core 3.1.3 使用提供程序“Microsoft.EntityFrameworkCore.SqlServer”初始化“ApplicationDbContext”,选项:MigrationsAssembly=Alpha.DataAccess System.InvalidOperationException:找不到属性的关系类型的映射CLR 类型为“Nullable”的“Alpha.Models.Identity.User.LockoutEnd”。在 Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.Diff(IProperty 源,IProperty 目标,DiffContext diffContext)+MoveNext() 在 Microsoft.EntityFrameworkCore.Migrations 的 Microsoft.EntityFrameworkCore.Storage.RelationalTypeMappingSourceExtensions.GetMapping(IRelationalTypeMappingSource typeMappingSource, IProperty 属性)。 Internal.MigrationsModel 不同。1 sources, IEnumerable1 个目标,DiffContext diffContext,Func 4 diff, Func3 添加,Func 3 remove, Func4[] 谓词)+MoveNext() 在 System.Linq.Enumerable.ConcatIterator 1.MoveNext() at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.Diff(TableMapping source, TableMapping target, DiffContext diffContext)+MoveNext() at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.DiffCollection[T](IEnumerable1 源,IEnumerable 1 targets, DiffContext diffContext, Func4 差异,Func 3 add, Func3 删除,Func 4[] predicates)+MoveNext() at System.Linq.Enumerable.ConcatIterator1.MoveNext() 在 Microsoft.EntityFrameworkCore。 Migrations.Internal.MigrationsModelDiffer.Sort(IEnumerable 1 operations, DiffContext diffContext) at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.GetDifferences(IModel source, IModel target) at Microsoft.EntityFrameworkCore.Migrations.Design.MigrationsScaffolder.ScaffoldMigration(String migrationName, String rootNamespace, String subNamespace, String language) at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(String name, String outputDir, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name, String outputDir, String contextType) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigration.<>c__DisplayClass0_0.<.ctor>b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_01.b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action) 找不到属性“Alpha.Models.Identity.User”到关系类型的映射。 LockoutEnd',CLR 类型为'Nullable'。PM>

无法为属性找到到关系类型的映射

用户身份模型:

0 投票
1 回答
77 浏览

c# - ASP.NET Core Entity Framework 代码到数据库的脚手架无法识别 Id 属性或 [Key] 注释

我正在尝试为我的Ticket班级搭建一个剃刀页面集,当 Entity Framework 尝试创建数据库时出现错误:

这显示了我旁边的错误

我的理解是,如果您有一个属性“Id”,它将使用它,并且如果您设置 [Key] 注释,它将专门告诉实体框架使用该属性。这两样东西我都有,那又是什么呢?

0 投票
1 回答
544 浏览

c# - 使用 Microsoft Entity Framework Core 设计购物车模型

我是 Entity Framework Core 的新手。在我的购物车模型设计中,我在使用 Entity Framework Core 设计模型类时有点困惑。

我已将地址集合分配给用户模型,因为一个用户可以有多个送货地址。

在我的订单模型中,一个用户可以进行多个订单,因此我userID在订单表中声明为外键cartID(因为订单属于购物车)。

在我看来,在处理订单时,我的要求是用户应该能够从下拉列表中选择他方便的地址。

这些是我在项目中的模型类:

用户型号:

地址型号:

订购型号:

公共类订单 { public int Id { 获取;放; } 公共 int CartID { 获取;放; } 公共购物车购物车 { 获取;放; }

推车型号:

我的模型类的设计是否正确?

我应该ICollection<Order>User模型中包含一个用户可以有多个订单吗?

我应该声明UserAddress为一个单独的模型类来映射用户及其地址吗?

我的Cart模型与用户(使用userid)映射,因为每个用户都有自己的购物车,所以userID在购物车和订单模型中重复(有什么方法可以消除这种依赖关系)还是正确的?

0 投票
1 回答
467 浏览

entity-framework - 如何使 Entity Framework Core 创建未强制执行的外键约束

我在 EF Core 3.1.2 中使用代码优先

我在我的 DbContext 的 OnModelCreating 方法中建立了以下双向一对一关系。

这会在数据库中创建外键约束。我希望这些约束不被强制执行。即我希望将“强制外键约束”选项设置为“否”。默认情况下,这设置为是。

在此处输入图像描述

这可能吗?如果是这样,我该怎么做?

0 投票
1 回答
287 浏览

.net-core - 删除迁移和更新数据库实体框架核心时出错 从流中读取时出错

我正在使用带有实体框架代码优先方法的restful服务在dotnet core web api中工作。我正在运行一次迁移,当我使用 add-migration 命令运行迁移时,构建成功,但是当我尝试使用 remove-migration 更新数据库或回滚迁移时,出现以下错误:

0 投票
0 回答
79 浏览

c# - 实体框架 MVC 代码优先 BIND 不适用于 EDIT 操作中的子实体

我正在使用带有 MySQL db 的 ASP Core Web 应用程序、MVC、Code First。这是我的数据库的结构: 在此处输入图像描述

这是这两个模型/类的代码:

=====此代码适用于第二个 EmployeeDate 表(儿童)=====

CREATE 方法工作正常,包括 HiredDate (Not FiredDate)。但 EDIT 仅适用于 Employee 属性, FiredDate 属性不起作用。我可以更新其他所有内容,例如名字、年龄等,但不能更新 FiredDate。

这是控制器内部的代码:

最后查看:====编辑==== 在此处输入图像描述

====创建==== 在此处输入图像描述

顺便说一句,当在 Create View 中注释掉 FiredDate div 时(因为那里不需要它),我的项目无法立即构建。

关于我做错了什么的任何建议?我是这种 ASP Code First 方法的新手。这里还有一些照片: 在此处输入图像描述

0 投票
0 回答
53 浏览

sql-server - 如何从 ASP.NET Core 3.1 Identity 中的 IdentityUser 类添加关系?(代码优先)

我有一个 Asp.Net Core MVC 3.1 项目。我想使用代码优先技术加入约会和患者表,但是外键列为空。

我的病人班;

而我的预约课,我与病人和预约有一对多的关系。

如果我向外键添加“必需”注释而不保存约会。

我怎么解决这个问题?

0 投票
1 回答
186 浏览

c# - 数据库集.AddAsync 在导致异常的标识列上设置 id 值

我有一个班级订单,它与其他 2 个班级有关系,但问题在于这里的 ID

我以这种方式映射:

在我的存储库中,我正在使用这种方法进行保存,因为您可以看到属性TradingAction并且Status不是由我填写,但它们的 Id 被传递给要创建的订单。

在这种情况下 _context.Set<TEntity>().AddAsync(entity);抛出一个异常说:

当 IDENTITY_INSERT 设置为 OFF 时,无法为标识列插入显式值。

运行 SqlProfiler 我得到这个查询:

这告诉我什么@p0=-2147482647时候应该自动生成身份。

如果我在我的映射上将此行更改为此它可以工作并将属性设置为身份:

这是不允许我使用.UseIdentityColumn()方法的问题。