- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 EF Core 1.1.0,并且级联行为存在严重问题。
我有一个名为 Land 的模型,如下所示:
public class Land
{
public long Id { get; set; }
public int HorizontalPosition { get; set; }
public int VerticalPosition { get; set; }
public bool IsPlaced { get; set; }
// Relations
public string UserId { get; set; }
public virtual User User { get; set; }
public long? BuildingId { get; set; }
public virtual Building Building { get; set; }
}
还有另一个名为 Building 的模型,如下所示:
public class Building
{
public long Id { get; set; }
public bool IsPermanent { get; set; }
public int UpgradeCount { get; set; }
// Relations
public string UserId { get; set; }
public virtual User User { get; set; }
public int BuildingTypeId { get; set; }
public virtual BuildingType BuildingType { get; set; }
public virtual List<Land> Lands { get; set; }
}
在 dbcontext 中我提到了这样的关系:
...
modelBuilder.Entity<Land>()
.HasOne(l => l.Building)
.WithMany(b => b.Lands)
.HasForeignKey(l => l.BuildingId)
.OnDelete(Microsoft.EntityFrameworkCore.Metadata.DeleteBehavior.SetNull);
...
但是当我尝试更新数据库时出现此错误:
System.Data.SqlClient.SqlException: Introducing FOREIGN KEY constraint 'FK_Lands_Buildings_BuildingId' on table 'Lands' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Could not create constraint or index. See previous errors.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite, String methodName)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection connection, String executeMethod, IReadOnlyDictionary`2 parameterValues, Boolean closeConnection)
at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.ExecuteNonQuery(IEnumerable`1 migrationCommands, IRelationalConnection connection)
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_1.<.ctor>b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
ClientConnectionId:65b8e08e-2d17-46ac-b734-385f88dd07b1
Error Number:1785,State:0,Class:16
Introducing FOREIGN KEY constraint 'FK_Lands_Buildings_BuildingId' on table 'Lands' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Could not create constraint or index. See previous errors.
生成的迁移是这样的:
...
migrationBuilder.AddForeignKey(
name: "FK_Lands_Buildings_BuildingId",
table: "Lands",
column: "BuildingId",
principalTable: "Buildings",
principalColumn: "Id",
onDelete: ReferentialAction.SetNull);
...
我已经告诉过在删除时将外键设置为空,但它希望我不执行任何操作。尽管在 dbcontext 中没有名为“NoAction”的行为!
最佳答案
在 EF Core 版本 2.2.6 中,Microsoft.EntityFrameworkCore.DeleteBehavior
枚举中有 ClientSetNull
条目。
使用 ClientSetNull
而不是 SetNull
对我的情况产生了影响。
我不明白为什么MsSqlServer无法解析多个级联路径,其他引擎完全可以这样做。
关于c# - EF Core DeleteBehavior.SetNull 造成循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42856547/
PreparedStatement接口(interface)中的setNull()方法有什么用?我查看了this发布。 它说:如果没有 setNull(..) 方法,就无法为 Java 原语设置 nu
Java PreparedStatement 提供了显式设置 Null 值的可能性。这种可能性是: prepStmt.setNull(parameterIndex, Types.VARCHAR); 此
请有人告诉我如何在 Symfony 2 中设置 onDelete: SetNull ?这是示例: oneToOne: Company: targetEntity: Compan
我的数据库中有一个非常大的表。其中一些字段可能为空。 我只想避免使用: PreparedStatement.setNull(index, Type.X) 喜欢: if(obj.getSomaData(
我将 Postgresql 与 HikariCP 一起使用,我的查询类似于 SELECT * FROM my_table WHERE int_val = ? ... 现在,我想为我的变量设置 NULL
这个问题已经有答案了: Why does PreparedStatement.setNull requires sqlType? (3 个回答) 已关闭 1 年前。 我有一个带有 Mysql DB 的
我用一个表做了一个实验,该表有一个带有空值的 VARCHAR 列,试图获取具有特定列 NULL 的行数。我使用了三种形式: 表格A SELECT COUNT(*) FROM buyers WHERE
我正在使用 EF Core 1.1.0,并且级联行为存在严重问题。 我有一个名为 Land 的模型,如下所示: public class Land { public long Id { get
当 MySQL 列类型为 TEXT 时,我应该使用什么 java.sql.Types 在准备好的语句中设置 NULL?我在这里没有看到类型文本:http://docs.oracle.com/javas
根据 PreparedStatement.setNull 的 java 文档:“注意:您必须指定参数的 SQL 类型”。方法需要列的SQL类型是什么原因? 我注意到传递 java.sql.Types.
问题#1 谁能告诉我,当 sPhoneExt 使用以下代码时,我将获得什么好处?是 null ? if (sPhoneExt == null || sPhoneExt.trim().equals(""
我正在我的 JAVA 应用程序和 PostgreSQL 数据库中进行过滤搜索。 我有以下用于选择航类数据的 PostgreSQL 查询: String query = "SELECT flight.
我正在 JDBC 中针对 Oracle 11g 数据库执行 PreparedStatement 查询,发现传递 null 参数的结果与在查询本身中定义“is null”不同。 例如,这个查询: Str
我想根据我得到的类型在运行时设置空值 这是我的代码 @SuppressWarnings("rawtypes") // input can be Intger,Date, BigInt etc whic
我正在尝试将 int 值上传到我的数据库表,该值可能为空。我有以下代码: ps = connection.prepareStatement("INSERT INTO table1 (COL1) VAL
下面的语句有什么区别。 PreparedStatement.setNull(1, java.sql.Types.NULL); 和 PreparedStatement.setNull(1, java.s
对于可选关系(当外键可以接受 Null 时),一个新的 ClientSetNull自 EF Core 2.0 起引入了行为 默认 删除行为的选项 DeleteBehavior.ClientSetNul
我正在尝试使用 Java 调用存储过程。 我已经查看了类似的错误,并已尝试复制解决方案,但仍然有错误。 java.sql.SQLException:调用中的参数无效:对用户定义类型和 REF 类型使用
我是一名优秀的程序员,十分优秀!