ここで非常に奇妙なシナリオを手に入れました。
DBContext を使用して次のコードを呼び出すと、削除に失敗します
int id = 5;
var sql = "SELECT * from dbo.Product WHERE productId = @id";
var data = dbContext.Set<Product>().SqlQuery(sql, new object[] {new SQLParameter("id", id)});
var entityToDelete = data.AsQueryable().FirstOrDefault();
dbContext.Set<Product>().Remove(entityToDelete);
dbContext.SaveChanges();
次のエラー メッセージが表示されます。
「MyEntities.Products」のエンティティは、「FK_Product_ProductType」関係に参加します。関連する 'ProductType' が 0 件見つかりました。1 'ProductType' が必要です。
現在、すべての製品には ProductType への外部キー参照があります。データベースには、この外部キーに設定された値が実際にあります。
これがキッカーです。コードを 1 行ずつデバッグしてステップインすると、成功しますか? 非常に奇妙な?なぜこうなった?何か案は?
アップデート
デバッグ時に変数 entityToDelete を見ると成功します。しかし、時計を外すと失敗します。これは、遅延読み込みと関係があると思います。