- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我不知道我是否遗漏了什么......无论如何:
例如,您可以看到属性为“HomeTeam”=“Forest Green Rovers”的对象的状态为“Unchanged”。无论如何,就我而言,所有实体都是“不变的”。所以,如果我是正确的,saveChanges 不应该尝试将它们插入我的表中,但这就是它正在发生的事情:
违反了主键,但 EF 不应该尝试添加此记录(具有属性 HomeTeam = 'Forest Green Rovers' 的记录),因为它是“未更改”,对吗?
为什么 EF 这样做?
实体:
{
using System;
using System.Collections.Generic;
public partial class MatchInfo
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public MatchInfo()
{
this.Sport = "Soccer";
this.OddsInfoes1X2 = new HashSet<OddsInfo1X2>();
this.Odds1X2Movements = new HashSet<OddsMovement>();
this.OddsInfoOverUnders = new HashSet<OddsInfoOverUnder>();
this.OddsMovementOverUnders = new HashSet<OddsMovementOverUnder>();
this.HistoryResults = new HashSet<HistoryResult>();
}
public string League { get; set; }
public System.DateTime Date { get; set; }
public string HomeTeam { get; set; }
public string AwayTeam { get; set; }
public string FinalScore { get; set; }
public string Sport { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<OddsInfo1X2> OddsInfoes1X2 { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<OddsMovement> Odds1X2Movements { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<OddsInfoOverUnder> OddsInfoOverUnders { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<OddsMovementOverUnder> OddsMovementOverUnders { get; set; }
public virtual TeamsStatFinal TeamsStatFinal { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<HistoryResult> HistoryResults { get; set; }
}
更多信息:
foreach (something){
/*iterating on a web page and where I build the object oMatchInfo */
if (oMatchInfo != null)
{
oMatchInfoTemp = (from m in context.MatchInfoes where m.HomeTeam == oMatchInfo.HomeTeam && m.AwayTeam == oMatchInfo.AwayTeam && m.Date == oMatchInfo.Date select m).FirstOrDefault<MatchInfo>();
if (oMatchInfoTemp == null)
{
context.MatchInfoes.Add(oMatchInfo);
}
else
{
context.OddsInfoes1X2.AddRange(oMatchInfo.OddsInfoes1X2);
}
}
}
/* here there is the context.saveChanges() - the context is the same */
操作。我发现了我的错误,它真的很愚蠢 :-( 在 for 的相关函数中有一些未注释的代码,我在其中添加实体而不检查 PK 约束。“未更改”状态(第一张图片)让我感到困惑,我一直专注于此......对不起:-)
最佳答案
如果您想向上下文中添加不是新实体的实体(PK 已存在于数据库中),那么您需要附加实体而不是添加实体。
此处有更多详细信息 https://msdn.microsoft.com/en-us/library/jj592676(v=vs.113).aspx
要详细说明,请仔细查看上下文内容。您会发现一个具有已添加状态的实体。
关于c# - SaveChanges() 正在保存 Unchanged 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46221324/
我试图告诉 Git 忽略我对属性文件所做的更改,这样我就不会不小心将它提交到我的 git 存储库。我正在使用: git update-index assume-unchanged [文件] 给出输出:
对于我正在开发的项目,我想使用: git add . -A 向舞台添加一些文件。问题是 Git 认为这些文件自上次提交以来没有变化,因此它们被忽略。然而,我亲自更改了该文件,但 Git 仍然认为该文件
我正在开发一个 git 代码库。我想更改服务器跟踪的项目 xml 文件。我想以这样的方式进行设置: 我的本地更改应该被忽略并且永远不会发送到服务器。 服务器应该同步覆盖我的本地更改。 目前我在用 gi
我想共享当前状态下的某个文件,但我不想提交进一步的更改。所以我对那个文件做了“假设不变”。现在,git 忽略了我存储库中这个文件的更改。但是存储库的其他用户呢——他们是否必须在他们自己的存储库中为这个
我只想拥有一个固定大小的 JPanel,它会锁定其大小(用户不能更改大小)。我应该怎么做? 最佳答案 JPanel 不能由用户调整大小。 如果您指的是 JFrame,您可以使用 setResizabl
是否可以向更新查询添加“未更改”参数。 在一些旧代码中我有类似的东西: string query = @"Update Table SET Field1=@var1, Field2=@var2, Fi
当通过 d3.js 传递数据时,该库将数据分为进入/更新/退出组件,但我发现我们在更新部分浪费了大量计算,用于重新计算未更改的值并将属性重新设置为已经存在的相同值。 有什么好的方法可以将“更新”集合进
我不知道我是否遗漏了什么......无论如何: 例如,您可以看到属性为“HomeTeam”=“Forest Green Rovers”的对象的状态为“Unchanged”。无论如何,就我而言,所有实体
我将什么标记为 --assume-unchanged?有什么方法可以找出我使用该选项 stash 的内容吗? 我翻遍了 .git/ 目录,没有看到任何看起来像我期望的东西,但它一定在某个地方。我忘记了
我需要 assume-unchanged 标志来避免错误提交我的项目设置文件。我这样做是通过: git update-index --assume-unchanged 还有一种方法可以使用 --no
我在 development 分支中进行开发,然后在创建发布标签之前合并到 trunk 中。我一直发现一个文件在合并后提交时不断显示为已更改。它没有改变。我发布这个是希望其他人遇到过这个问题并且知道发
我要这个: def compare_list(old, new): new_set = set(new) old_set = set(old) return new_set -
我正在尝试在 Linux TFVC 管道中运行“撤消未更改”命令。 这些命令从 bash 脚本运行: tf workspaces -login:${credentials} -collection:$
下面的(简化的)模板呈现一个带有两个输入字段的表单,根据数据上下文预先填充。可以为多个不同的数据上下文打开该表单(尽管一次只能打开一个),在这种情况下,我希望使用新数据重新呈现所有字段 - 这大多数都
// Rollback changes switch (entry.State) { case EntityState.Added: entry.State = EntityS
我是 JQuery 的新手,对此有疑问 $("#trigger").click( function(){ $("#pnel-menu").toggle("slow");
我有一个简单的雪花模式,我从中生成了我的 Entity Framework 模型。 问题是我试图将一个子实体映射到一个现有的父和/或祖 parent 实体,但它仍然插入它。 我关注了这个: Inser
This answer向您展示如何将由 git 管理的文件标记为“我不想从该文件的存储库中进行更改”- IE 拥有该文件的您自己的本地未跟踪版本,即使它仍处于 git 的修订控制之下 Remote 。
我在一个构建网络应用程序的项目中。我们使用 Git 进行版本控制,使用 Gulp 进行任务自动化。我想暂时忽略文件到某个文件夹,build文件夹。我们倾向于在一天结束时(或编码 session 结束时
我的存储库中有一个目录结构: |-repository/ | | |-repository/fileOne | | | |-subOne/ | | |-subOne/fileTwo |
我是一名优秀的程序员,十分优秀!