当我从AD获取用户凭据并将其保存到Profiles
表中时,我有一个控制器。我还想设置一些用户首选项,但为了做到这一点,我需要Id
中的Profile
我刚刚保存,将其放在Preference
表中。
var Profile = new Profile
{
//Id is auto increment
EmpId = viewmodel.EmployeeId;
//....
};
db.Profiles.Add(Profile);
db.SaveChanges();
偏好设置保存:
var user = User.Identity.Name;
var getUser = (from gu in db.Profiles where user == gu.EmployeeId select gu.Id).Single();
var Preference = new Preference
{
UserId = getUser,
//...
};
db.Preferences.Add(Preference);
db.SaveChanges();
在这种情况下,这是否可以接受?
答案 0 :(得分:1)
看起来您的变量getUser
(请重命名此变量)最终会成为新保存的配置文件ID ..虽然您没有向我们展示您定义uc
的位置。
var profile = new Profile
{
//Id is auto increment
EmpId = viewmodel.EmployeeId;
//....
};
var preference = new Preference
{
//...
};
profile.Preferences.Add(preference;)
db.Profiles.Add(profile);
db.SaveChanges();
因此,您可以看到您不必要地使用了超过1个SaveChanges。有时您需要有多个SaveChanges。比如让我们说SaveChanges,将id发布到api,检索一些值并再次保存更改。我实际上从来没有这样做,但我有时间需要超过1次保存更改。例如,我必须将x量的数据库记录(包括x个相关记录)复制到循环中的新记录中。