まず、いくつかのテーブルを定義しましょう。
Users テーブルには、ユーザーに関する情報が格納されます。
Users
- UserID (int, PK)
- ...
UserTasks は、ユーザーに関連付けられたタスクを格納するテーブルです。
UserTasks
- userID (int, FK to Users table)
- taskName (varchar)
ADO Entity Framework を使用して UserTasks テーブルを生成すると、次のようなクラスが得られます。
UserTasks
- taskName (文字列)
- Users (Users オブジェクトのコレクション)
注: UserTasks テーブルで生成されるユーザー ID はありません。では、新しいユーザー タスクを挿入する必要があるとしましょう...どうすればよいでしょうか? userID FK フィールドへのアクセス権がないため、唯一のオプションは、ルックアップを実行して Users オブジェクトに入力し、それを次のようにタスク オブジェクトに渡すことです。
//get the user we are interested in
var user = (from u in context.Users
where u.userID == 2
select u).FirstOrDefault();
//create the new task
UserTasks newTask = new UserTasks();
newTask.taskName = "New Task";
newTask.User = user;
上記の問題は、ユーザー オブジェクトを設定するために余分で不必要なデータベース呼び出しを行っていることです。どうにかして私のuserIDフィールドへの新しいマッピングを作成し、それでもUserオブジェクトを保持する方法はありますか?
ありがとう
--ライアン