親と子の関係に2つのテーブルがあります。
親を削除しようとすると、次のエラーが発生します。
The operation failed: The relationship could not be changed because one or more of the foreign-key properties is non-nullable. When a change is made to a relationship, the related foreign-key property is set to a null value. If the foreign-key does not support null values, a new relationship must be defined, the foreign-key property must be assigned another non-null value, or the unrelated object must be deleted.
dbfirstタイプのモデルでSQLServer2012を使用しています。
データベースでは、削除ルールがカスケードに設定されており、.edmxでそのルールもカスケードに設定されていることを再確認しました。
私は複数のトランザクションを実行し、最後に.SaveChanges()を呼び出しています...それがそれと関係があるかどうかはわかりません。具体的には、最初に別のテーブルで発行している更新があり、次にこの削除があります。
削除するための私の一般的なリポジトリコードは次のとおりです。
public virtual ActionConfirmation<int> Delete(TRepository entity, bool boolCommitChgs = true)
{
try
{
//DbSet.Remove(entity);
_dataContext.Entry(entity).State = System.Data.EntityState.Deleted;
if (boolCommitChgs)
{
_dataContext.SaveChanges();
}
return CRUDMessage(true, "deleted", entity);
}
catch (Exception ex)
{
return CRUDMessage(false, "delete", entity, ex);
}
}
次に、トランザクションを完了し、ここでSaveChangesを呼び出します。これは、エラーがスローされたときです。
try
{
dbContext.SaveChanges();
result = ActionConfirmation<int>.CreateSuccessConfirmation(
string.Format("{0} {1}: {2} successful.",
strNoun,
id,
strVerb
),
id
);
}
catch (Exception ex)
{
....etc....
このエラーが発生する理由はありますか?