我有两个表,sr_leagures和sr_programs。SR_Programs与sr_leagues有一对多的关系。
我有以下使用实体框架的代码:
var newProgram = new SR_Programs
{
// Set Properties
Leagues = new List<SR_Leagues>()
};
ctx.SR_Programs.Add(newProgram);
SR_Leagues tmpLeague = new SR_Leagues
{
// Set properties
};
那么这就是我要问的部分:
ctx.SR_Leagues.Add(tmpLeague);
if (newProgram.Leagues != null)
{
newProgram.Leagues.Add(tmpLeague);
}
然后关闭DB上下文
ctx.SaveChanges();
这是否会两次将TMPleague
实体添加到数据库中?一旦附加到newprogram
并添加到sr_leagues
表?
或者EF会因为两者的关系而知道自己是同一个实体吗?
没有理由打电话
ctx.SR_Leagues.Add(tmpLeague);
何时
newProgram.Leagues.Add(tmpLeague);
正在被召唤。
它们都将sr_leagours
对象的状态跟踪属性设置为Added。
实体框架将只发出一条与此对象相关的insert语句。
这是否会两次将tmpLeague实体添加到数据库中?
不,但你不需要这么做
或者EF会因为两者的关系而知道自己是同一个实体吗?
是的,但你不需要这么做
var newProgram = new SR_Programs
{
// Set Properties
Leagues = new List<SR_Leagues>()
};
ctx.SR_Programs.Add(newProgram);
newProgram.Leagues.Add(new SR_Leagues
{
// Set properties
});
await context.SaveChangesAsync()