【问题标题】:linq to sql , how to disable ChangeConflictExceptionlinq to sql,如何禁用 ChangeConflictException
【发布时间】:2011-01-10 01:43:52
【问题描述】:

我正在使用 .net 4.0 , 我有一个表代理,代理有一个字段“accessed_date”,当他登录时每 2 秒更新一次。

我有一个服务操作“UpdateAgent”,顾名思义它更新了代理,我不希望这个操作抛出 ChangeConflictException,如果只有字段“accessed_date”被更新,因为我知道,这是正常的将得到更新,我如何禁用 ChangeConflictException 以在提交更改时被解雇。

谢谢 贾马尔。

【问题讨论】:

    标签: linq-to-sql


    【解决方案1】:

    您正在隐式使用“乐观并发”。默认情况下,UpdateCheck 属性设置为 Always。将accessed_date 列的UpdateCheck 设置为None。

    方法如下(尚未尝试,希望这可行 - 如果没有,请谷歌搜索 UpdateCheck.Never 并检查提供的解决方案之一是否适合您): Setting the UpdateCheck.Never mode by default in Visual Studio 2010 DBML designer (MS SQL/ASP.NET MVC)

    【讨论】:

    • 如果我想禁用整个表的乐观并发怎么办。
    • AFAIK,没有直接的方法。如果您确实需要,您可以使用普通的 ExecuteCommand(意味着您再次编写 SQL 字符串)或使用 Attach() - 请参阅文章 blogs.msdn.com/b/dinesh.kulkarni/archive/2008/06/01/…richardbushnell.net/2008/02/18/… 了解更多详细信息。
    • 你定义的方法对我不起作用,因为我在这个表上有一个时间戳列。所以除了时间戳列之外的每一列的 updateecheck 都设置为 false。现在还有其他解决方案吗?
    • 从 dbml 中删除时间戳列怎么样?添加此属性也无济于事吗? [Column(Storage=“Timestamp”, UpdateCheck=UpdateCheck.Never)] 公共字符串 Timestamp ....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多