我正在向数据库中的表 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(); 在搜索之前打电话?
是否有必要向 MyModel 添加一个唯一值,以便我可以查询数据库以获取它的 ID?(尽管 ID 已经是我未来查询的唯一值)我在想一个 DateTimeCreated 值,我会像这样搜索它:
new MyModel MyModelWithId = db.MyModel.FirstOrDefault(
o => o.TimeDateCreated == MyModel.TimeDateCreated);
不确定 DateTime 方法是否也非常有效。