为什么.Update复制记录?

米切尔恩11

活跃成员
已加入
2020年4月10日
留言内容
39
编程经验
Beginner
Do you know why .Update would be duplicating a record?

我正在运行REST调用以将信息保存到我的Parks数据库中,但是在保存它之前,我正在检查park代码以查看其是否已存在于数据库中。这甚至是正确的代码吗?它确实命中了else语句,只是内容没有更新,而是创建了一个新语句。有任何想法吗?
C#:
// Check for duplicates
Park uniqueParkCode = _context.Parks.Where(c => c.ParkCode == individualPark.ParkCode).FirstOrDefault();
if (uniqueParkCode == null)
{
    _context.Parks.Add(park);
    _context.SaveChanges();
}
else
{
    _context.Parks.Update(park); // Adds a new park instead???
    _context.SaveChanges();
}
 
由主持人最后编辑:

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,538
地点
弗吉尼亚州切萨皮克
编程经验
10+
我不知道。我像瘟疫(或COVID-19,取决于您更担心哪一种)一样逃避Entity Framework。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,933
地点
英国
编程经验
10+
Do you know why .Update would be duplicating a record?
调试代码。如果需要,请在我的签名中提供调试器教程。

它的表现是否符合您的预期?
 

米切尔恩11

活跃成员
已加入
2020年4月10日
留言内容
39
编程经验
Beginner
调试代码。如果需要,请在我的签名中提供调试器教程。

它的表现是否符合您的预期?
它确实转到正确的if / else语句并显示我想要的内容。只是在更新后,它实际上并没有更新。它实际上是在创建新记录。这是实体框架的潜在问题吗?
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,933
地点
英国
编程经验
10+
我们至少避免了它,因为我由于其大量未修复的错误和未确认/已确认的内存泄漏而拒绝支持/使用EF。尽管我告诉人们很多年了,但他们仍然使用它。

其次,我不知道您的EF代码已为您映射了什么。我可以不被吸入而头痛。检查EF以某种方式引用的每个类都不是我想度过的周日晚上。此外,我们不在您的PC上,而是在您的PC上。这就是Microsoft提供调试器的原因。因此,请原谅我的嚣张气焰,但是,如果您使用EF,那么当之无愧的它将为您带来帮助。 😆

一般来说...设置调试点将引导您完成代码,在其中可以实时确定代码在做什么。调试是找出原因的唯一方法。

抱歉,我没有更多帮助。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,538
地点
弗吉尼亚州切萨皮克
编程经验
10+
原谅我的无知,但是为什么要避免呢?你用什么代替呢?
这是微软试图从NHibernate手中夺走思想份额的尝试。尝试执行不佳……是第一次,之后又是四次。目前的迭代效果更好,但仍存在问题 @谢平 如上所述。总的来说,我是一名MS迷男孩,因为我曾经为Evil Empire工作了将近20年,但是我有些疏远了MS技术,而EF就是其中之一。

我更喜欢使用OODBMS(面向对象的数据库管理系统)和NoSQL数据库。
 

尼尔

论坛管理员
工作人员
已加入
2011年4月15日
留言内容
147
地点
VA
编程经验
10+
有人说NHibernate吗?现在那是一场灾难!我个人喜欢EF,甚至更喜欢EF Core。我建议以上所有内容都请观看EF Core和EF Core In Depth系列。

5部分系列/简介:


10部分系列/高级:

 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,538
地点
弗吉尼亚州切萨皮克
编程经验
10+
是的,由于所有旋钮,开关和手动操作,NHibernate可能是一场灾难。学习曲线陡峭。我相信这就是Microsoft想要通过其各种EF尝试解决的问题。回想一下,EF的第一个版本需要使用可视化的拖放方法来设计实体-完整的180表格NHibernates文本配置。
 
最佳 底部