【问题标题】:Linq to sql submit changes () or .Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, "entity to update")Linq to sql 提交更改 () 或 .Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, "entity to update")
【发布时间】:2017-02-11 08:49:42
【问题描述】:

大家好,正如您在我的标题中看到的那样,我想知道当我们谈论 Linq to SQL、SubmitChanges() 方法或 .Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, "entity to update"),因为我们忘记了每次对数据库表进行更改时都需要使用它们,这是真的吗?

因为如果我们不使用它们,我们将永远不会在我们的 IDE(例如 Visual Studio)中更新数据库模型。

我刚开始使用 linq to sql,我想了解这两个助手,我为什么要或为什么不应该使用它们中的任何一个。

谢谢各位, 干杯

【问题讨论】:

    标签: c# sql database linq datacontext


    【解决方案1】:

    这两种方法做了无与伦比的事情。 SubmitChanges 写入数据库,Refresh 从数据库读取。

    Refresh 几乎不需要,因为通常你是通过实体进行所有写入。这意味着实体始终是最新的。

    【讨论】:

    • 但是这个伙伴呢:我更新数据库中的字段,例如状态,即我将其设置为 false,然后我立即调用方法给我所有状态设置为 true 的行,如果在我更新我的数据库表后我不打电话给.Refresh 我仍然会得到 UN UPDATED 行吗?
    • 您应该使用 ORM 进行更新。然后,没有同步问题。如果您在不知道 L2S 的情况下更新,那么您有同步问题,是的。这是一个非常罕见的情况,因为这是非常糟糕的做法。事实上,同步问题是不确定的。如果实体是新的,它就是新鲜的。如果它在查询之前就存在,那就是旧的。所以不要那样做:)
    • 所以,伙计,你能给我一个好的做法的例子吗,因为我就是这样学会使用它的:做一些表更改,调用刷新方法并继续,所以你能提供我链接或写一个吗举个例子,我和我想全世界的很多用户都会对此表示感谢! :)
    • 我已经告诉过你:对你的实体进行更改,调用 SubmitChanges。为什么你不能这样做?
    • 其实我可以,所以它会像这样工作,进行一些更改,例如插入和删除,我必须在提交方法上调用插入/删除并传递实体对象并调用 SubmitChanges() 方法。谢谢队友,我会尝试而不是在单次插入/更新到我的数据库后调用.Refresh...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多