1

ここで非常に奇妙なシナリオを手に入れました。

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 を見ると成功します。しかし、時計を外すと失敗します。これは、遅延読み込みと関係があると思います。

4

0 に答える 0