什么时候可以调用db.SaveChanges()两次?

时间:2017-11-17 22:01:36

标签: c# asp.net-mvc

当我从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();

在这种情况下,这是否可以接受?

1 个答案:

答案 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个相关记录)复制到循环中的新记录中。