当我从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 数量的相关记录(复制到循环中的新记录中。