ef core code first 模式提示"可能会导致循环或多重级联路径"问题

执行命令

dotnet ef mirations add "xxxxxx"

dotnet ef database update

报错

将 FOREIGN KEY 约束 ‘FK_SkuPropertyItem_Sku_SkuId‘ 引入表 ‘SkuPropertyItem‘ 可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
无法创建约束。请参阅前面的错误消息

修改项目定义的dbContext的类,在OnModelCreating方法中加

       modelBuilder.Entity<SkuPropertyItem>()
                 .HasOne(t => t.Sku).WithMany()
                 .HasForeignKey(t => t.SkuId)
                 .OnDelete(DeleteBehavior.Restrict);

  

执行命令

dotnet ef mirations add "xxxxxx"

dotnet ef database update

还是报错。

因为没有把上次错误的migration删除。

如果抱错的话,要执行

dotnet ef mirations remove

再执行

dotnet ef mirations add "xxxxxx"

dotnet ef database update

查看是否正确迁移数据库变化

原文地址:https://www.cnblogs.com/saving/p/9271954.html

时间: 2024-10-30 09:27:09

ef core code first 模式提示"可能会导致循环或多重级联路径"问题的相关文章

EF core (code first) 通过自定义 Migration History 实现多租户使用同一数据库时更新数据库结构

前言 写这篇文章的原因,其实由于我写EF core 实现多租户的时候,遇到的问题. 具体文章的链接: Asp.net core下利用EF core实现从数据实现多租户(1) Asp.net core下利用EF core实现从数据实现多租户(2) : 按表分离   (主要关联文章) 这里我遇到的最主要问题是:由于多租户的表使用的是同一个数据库.由于这个原因,无法通过 Database.EnsureCreated() 自动创建多个结构相同但名字不同的表. 所以我在文中提到,需要自己跑脚本去创建多有的

EntityFramework Core Code First 已有数据库

问题场景:我已经有一个数据库,想用 EF core Code First,怎么办? 首先,可以参考微软的API文档:通过现有数据库在 ASP.NET Core 上开始使用 EF Core, 这一步可以将数据库表转换成对象,并生成DBContext.这时候只要在Startup中配置DBContext,就能够访问数据库了. 接下来,我们根据业务需求需要修改表,按照Code First逻辑,只需要修改对应的实体,然后使用 Add-Migration命令就可以了.这时候,我们会发现迁移命令生成的文件竟然

EF 下的code fist 模式编程

EF 分两种模式 codefirst(就是不知道数据是啥,也没有数据库)  和 database fist (数据已经设计好了) 首先打开vs  新建一个项目 创建一个控制台程序 然后 新建一个Teacher 类 public class Teacher { public int TeacherId { get; set; } public string Name { get; set; } public string Country { get; set; } public string De

EF应用一:Code First模式

EF的核心程序集位于System.Data.Entity.dll和System.Data.EntityFramework.dll中.支持CodeFirst的位于EntityFramework.dll中.通常使用NuGet Package Manager来添加这些程序集. 如果没有数据库:1.先写代码,自动创建数据库.2.如果代码有变化,自动删除数据库重建,或者是使用迁移功能更改已有数据库.如果已有数据库:1.使用EF PowerTools反向工程生成模型. 下面的示例程序中将通过一个控制台程序演

EF Core 2.0使用MsSql/Mysql实现DB First和Code First

参考地址 Entity Framework官网 ASP.NET Core MVC 和 EF Core - 教程系列 环境 Visual Studio 2017 最新版本的.NET Core 2.0 SDK 最新版本的 Windows PowerShell 开始搭建 1.在 Visual Studio 2017 中创建新项目 "文件">"新建">"项目" 从左侧菜单中选择"已安装">"模板"

EF Core中的DB First与Code First

前言: 大家都习惯在程序中生成对应的model来对数据库进行操作,所以如何快速的生成数据库表的对应model,是基础之一.总结了一下在我的认知中大概是这个结构: Db first方式: 先创建好对应的数据库通过数据库来生成对应的Model. 1 创建数据库 大家可根据自己的需要生成对应的数据库,这里只做演示所以使用官方给的SqlServer数据库脚本: CREATE DATABASE [Blogging]; GO USE [Blogging]; GO CREATE TABLE [Blog] (

8. EF Core 外键的删除模式

一.在删除有其它表的外键引用的数据有一下几种方式 1.不执行任何操作(EF Core默认Restrict):如果数据被其其他表外键依赖,拒绝删除 2.级联(Cascade):删除外键表中相应的所有行 3.设置NULL(SetNull):将表的外键字段值设置为空值NULL 4.设置默认值:如果外键表的所有外键列均已定义默认值,则将该列设置为默认值 级联删除例子 modelBuilder.Entity<Post>().HasOne(p => p.Blog).WithMany(b =>

EntityFramework Core技术线路(EF7已经更名为EF Core,并于2016年6月底发布)

官方文档英文地址:https://github.com/aspnet/EntityFramework/wiki/Roadmap 历经延期和更名,新版本的实体框架终于要和大家见面了,虽然还有点害羞.请大家多体谅! 下面正式进入主题: Entity Framework Core (EF Core) 下面是EF Core 的计划和技术线路,注意,这些计划是可能发现变化的,因为很多事是很难预测的.即便如此,我们还是尽可能保持计划的公开和透明,以解大家对EF Core期望,以及做出相应的安排. Sched

[转]EntityFramework Core技术线路(EF7已经更名为EF Core,并于2016年6月底发布)

本文转自:http://www.cnblogs.com/VolcanoCloud/p/5572408.html 官方文档英文地址:https://github.com/aspnet/EntityFramework/wiki/Roadmap 历经延期和更名,新版本的实体框架终于要和大家见面了,虽然还有点害羞.请大家多体谅! 下面正式进入主题: Entity Framework Core (EF Core) 下面是EF Core 的计划和技术线路,注意,这些计划是可能发现变化的,因为很多事是很难预测