当前位置: 首页 > 知识库问答 >
问题:

这是否会将实体添加到数据库中两次?

端木元青
2023-03-14

我有两个表,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会因为两者的关系而知道自己是同一个实体吗?

共有2个答案

宗政深
2023-03-14

这是否会两次将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()
邓宜年
2023-03-14

没有理由打电话

ctx.SR_Leagues.Add(tmpLeague);

何时

newProgram.Leagues.Add(tmpLeague);

正在被召唤。它们都将sr_leagours对象的状态跟踪属性设置为Added。实体框架将只发出一条与此对象相关的insert语句。

 类似资料:
  • 我是< code>sqlite数据库的新手,在我的项目中,我需要在创建数据库后添加数据。我尝试了这种方式,这是我的代码。 公共类主要活动扩展活动 { } 我创建了另一个类来打开sqlite数据库。 公共类MySqlHelper扩展SQLiteOpenHelper{ 公共字符串getBird(int id){ 它给我异常 帮助我避免这种情况,并在创建数据库后立即插入数据。

  • 我可能需要一些帮助,因为我被这些文件弄糊涂了: 我有一个JPA母公司: 和孩子: 如果我只是增加联系人,我希望JPA能够建立这种关系。 e、 g: 现在发生的是: 触点插入DB(良好) 使用providerX。联系人中的id。提供者列(良好) provider\u contact表中未显示任何关系条目 我知道我可以将联系人设置为提供者的属性<代码>providerX。联系人。添加(c)。。。回购。

  • 我在生产中有一个基于Hibernate的应用程序,有一个大型数据库。我需要在这个应用程序中向两个实体(两个表)添加审计,我决定使用Envers。 对于每次插入、更新或删除,Envers都会向实体的审核表中添加一条新记录。 如果从应用程序一开始就支持Envers,那么审计表将在实体创建(INSERT)时填充。 Envers留档非常薄,没有提到任何关于将Envers添加到现有应用程序的内容。 如果我简

  • 使用start创建spring boot项目时。Springio中,包含一些maven包装文件: mvnw 提交到git repo时是否应该忽略这些文件?

  • 问题内容: 我有一个正在创建的字符串,并且需要向该字符串添加多个“ \ 0”(空)字符。在每个空字符之间是其他文本数据(仅ASCII字母数字字符)。 我的问题是,在J2SE中,当您添加第一个null(\ 0)时,java似乎确定它是一个字符串终止符(类似于C ++),并且忽略了所有附加的数据。不引发错误,尾随的数据将被忽略。我需要在字符串中的null后强制添加其他尾随数据。我必须对我支持的旧数据库

  • 我正在Java创建一个航班应用程序,它应该做的事情之一是添加一个新的航班到数据库。我可以添加航班名称没有问题,但我有问题添加航班的座位数到数据库。数据库表被设置为将座席数作为整数值。在我的代码中,将这个值从用户界面添加到数据库的函数将一个值作为整数参数。然后,在添加新航班的实际按钮的事件处理程序代码中,我将值从字符串(这是文本框中接受的字符串)转换为整数,以便将值输入数据库。然而,当我运行我的代码