Telerik OpenAccess ORMを使用すると、 2 つのオブジェクトUser
とInvestment
. より具体的には、典型的な 1 対多の関係としてInvestments
外部キーが含まれます。User
つまり、各ユーザーは複数の投資を持つことができますが、各投資は 1 人のユーザーしか持てません。
次に、オープン アクセス機能「Is Managed」を利用しようとしました。
これは、次のようなことができ、関連するすべての投資を削除できることを意味するはずですUser.Investments.Clear();
(または、少なくともこれは多対多の関係ではうまく機能します) が、残念ながらこれを試みると、次のエラーが表示されます。
「更新に失敗しました: Telerik.OpenAccess.RT.sql.SQLException: 値 NULL を列 'UserID'、テーブル 'CODECorp.dbo.Investment' に挿入できません。列は NULL を許可しません。UPDATE は失敗します。」
明らかに、ORM が行おうとしているのは、投資オブジェクトからユーザーへの関連付け (つまり、外部キー) を削除するのではなく、削除することです。SQL プロファイラーを実行してこれを確認したUpdate
ところ、Delete
.
それで、私はここで何が欠けていますか?単純に行を削除するのではなく、誤って関連付けを削除しようとするのはなぜですか?