C# 何时可以调用db.SaveChanges()两次?
当我从AD获取用户凭据并将其保存到C# 何时可以调用db.SaveChanges()两次?,c#,asp.net-mvc,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(); 首选项保存: va
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();
在这种情况下,这是否可以接受?看起来您的变量
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();
因此,正如您所看到的,您不必要地使用了多个SaveChanges。有时您需要有多个SaveChanges。比如说,保存更改,将id发布到api,检索一些值,然后再次保存更改。我从来没有这样做,实际上,但我有很多次,我需要超过1保存更改。例如,我必须在一个循环中将x数量的数据库记录(包括x数量的相关记录)复制到新记录中 是的,为什么不呢。但您也可以将配置文件分配给导航属性(
新首选项{User=profilewhichitchisnotyetsaved}
),并仅调用一次。此处定义了uc的位置在不执行批处理操作或transactions@Evk那么它是如何查找的,如果一次有100人登录呢?你建议我做UserId=Profile.Id
?ROFL。。。不,我不是这么说的??我问你在哪里定义uc。uc
是一个打字错误,我修正了它。我在preference.userId上得到了一个空引用。并不是说我理解得很好,因为它一开始运行得很好。好吧,看来你们的数据关系是这样的?Profiles-->Usersyes,当用户首次登录时,应用程序通过Active Directory获取用户信息,并将其保存到Profile
表中,作为首选项
表中相同Id的行UserId
。请稍候。。配置文件表的主键名为userid吗?