データベースのテーブル MyModel に行を追加し、その新しい行に関する通知を別のテーブルに作成しています。通知を適切に作成するには、新しく作成された MyModel 行の ID が必要です。
これは私のコントローラからの私のコードです:
MyModel newMyModel = new MyModel
{
Title = appliedCourse.Title,
};
db.MyModel.Add();
// I need code here that finds the MyModel.ID - but I do not know how to search for this MyModel
// because MyModel.Title is not necessarily unique - the only necessarily unique piece of data
// would be the MyModel.ID
new MyModel MyModelWithId = db.MyModel.Find(MyModel) // <- that does not work
Notification newNotification = new Notification
{
Time = DateTime.Now,
Link = Url.Action("Details", "MyModel", newMyModelWithId.MyModelID),
ViewableBy = "Admin",
Complete = false
};
db.Notification.Add(newNotification);
db.SaveChanges();
新しく作成された MyModel の ID を取得する方法はありますか?
「最大の ID 値」を検索して返すことも考えられますが、それが最も効果的な方法かどうかはわかりません。
ID は必要なときに作成されますか、それとも db.SaveChanges(); を実行する必要がありますか? 探す前に電話?
データベースにクエリを実行してその ID を取得できるように、MyModel に一意の値を追加する必要がありますか? (ID は、将来のクエリで既に独自の値になっていますが) DateTimeCreated 値を考えていたので、次のように検索します。
new MyModel MyModelWithId = db.MyModel.FirstOrDefault(
o => o.TimeDateCreated == MyModel.TimeDateCreated);
DateTime メソッドが非常に効率的かどうかもわかりません。