2

親と子の関係に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....

このエラーが発生する理由はありますか?

ここに画像の説明を入力してください ここに画像の説明を入力してください

4

1 に答える 1

0

この問題は、更新によって一部の関係が変更されたことが原因である可能性があります。

于 2013-03-06T20:46:13.420 に答える