什么时候可以调用 db.保存更改() 两次



当我从AD获取用户凭据并将其保存到Profiles表中时,我有一个控制器。我还想设置一些用户首选项,但是,为此,我需要刚刚保存Profile中的Id将其放置在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();

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

看起来

您的变量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 个以上的保存更改。有时您需要有多个保存更改。比如说你保存更改,将 ID 发布到 api,检索一些值并再次保存更改。实际上,我从来没有这样做过,但是我有时需要1次以上的保存更改。例如,我必须将 x 数量的数据库记录(包括 x 数量的相关记录(复制到循环中的新记录中。