gpt4 book ai didi

linq-to-sql - 尽管变更集中有数据,为什么Linq to sql可能无法提交更改以使更新失败

转载 作者:行者123 更新时间:2023-12-04 02:32:57 24 4
gpt4 key购买 nike

我正在更新一组对象,但是更新在SqlException上失败,该异常显示为“ Where附近的语法不正确”。

所以我打开了SqlProfiler,这是生成的SQL:

exec sp_executesql N'UPDATE [dbo].[Addresses]
SET
WHERE ([AddressID] = @p0) AND ([StreetAddress] = @p1) AND ([StreetAddress2] = @p2) AND ([City] = @p3) AND ([State] = @p4) AND ([ZipCode] = @p5) AND ([CoordinateID] = @p6) AND ([CoordinateSourceID] IS NULL) AND ([CreatedDate] = @p7) AND ([Country] = @p8) AND (NOT ([IsDeleted] = 1)) AND (NOT ([IsNonSACOGZip] = 1))',N'@p0 uniqueidentifier,@p1 varchar(15),@p2 varchar(8000),@p3 varchar(10),@p4 varchar(2),@p5 varchar(5),@p6 uniqueidentifier,@p7 datetime,@p8 varchar(2)',@p0='92550F32-D921-4B71-9622-6F1EC6123FB1',@p1='125 Main Street',@p2='',@p3='Sacramento',@p4='CA',@p5='95864',@p6='725E7939-AEE3-4EF9-A033-7507579B69DF',@p7='2010-06-15 14:07:51.0100000',@p8='US'


果然,没有定论。

我也称为context.GetChangeSet(),正确的值在更新部分中。

另外,我检查了.dbml文件,并且所有属性“更新检查”值均为“始终”。

我完全不知所措,那里有什么帮助吗?

最佳答案

我已经重写GetHashCode以返回几个字段的串联。当我更改它以仅返回主键的哈希值时,它起作用了。

根本原因是,对于哈希代码在其生命周期中发生更改的对象,更新将失败,因此,当您覆盖GetHashCode时,您需要选择无法更新的属性,例如主键,

关于linq-to-sql - 尽管变更集中有数据,为什么Linq to sql可能无法提交更改以使更新失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3048081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com