EFモデルで定義された単純な2オブジェクトの継承、Person<-Userがあります。
Personは基本エンティティ/クラスであり、抽象的ではなく、firstname、lastname、emailなどのフィールドが含まれています。
Userは派生エンティティ/クラスであり、username、lastlogin、islockedoutなどのフィールドが含まれています。
データベースはタイプごとのテーブルスキーマを使用するため、Person用に1つのテーブルがあり、User用に別のテーブルがあります。どちらも同じ主キーフィールドであるPersonIDを使用します。PersonIDはIDENTITY列ですが、EDMでは、PersonIDのStoreGeneratedPatternがNoneに設定されています。
これはタイプごとのテーブル継承スキーマであるため、対応するUser行/オブジェクトを持たないPerson行/オブジェクトが存在する可能性があります。これは、システムにユーザーではない人に関するデータを含めることができるようにするためです。しかし、人は最終的にユーザーになる可能性があり、これは私が問題を抱えているところです。
このシナリオのテストケースがあります。このシナリオでは、システムがユーザーになりたい人物を見つけます。新しいUserオブジェクトにPersonIDフィールドを設定し、それをObjectContextに追加して、変更を保存してみました。何が起こるかというと、データベースは、PersonIDに設定した値を無視して、新しいUser行とともに新しいPerson行を作成します。
どうすればこれを回避できますか?EDM Crud操作を処理するためにsprocを作成する必要がありますか?