データベースのMyModelテーブルに行を追加し、その新しい行に関する通知を別のテーブルに作成しています。通知を適切に作成するには、新しく作成したMyModel行のIDが必要です。新しく追加されたデータ内で利用可能な一意の識別情報がなくても、新しく追加された行の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()を実行する必要がありますか。それを検索する前に電話しますか?
MyModelにIDを取得するためにデータベースにクエリを送信できるように、MyModelに固有の値を追加する必要がありますか?私はDateTimeCreated値を考えていたし、私はこのようにそれを検索します(IDはすでに将来のクエリのための私のユニークな値であるが):DateTimeの方法は、いずれかの非常に効率的である場合
new MyModel MyModelWithId = db.MyModel.FirstOrDefault(
o => o.TimeDateCreated == MyModel.TimeDateCreated);
わかりません。
完璧に動作します、ありがとうございます。変更内容をデータベースに保存する行為は、この文脈ではvar newMyModelを更新することは直感的ではありませんでした。知っていることは素晴らしいことです。再度、感謝します。 – Ecnalyr