【问题标题】:Quality of the autogenerated sql queries in Visual StudioVisual Studio 中自动生成的 sql 查询的质量
【发布时间】:2010-10-17 07:59:10
【问题描述】:

我遇到了自动生成的删除语句的问题。在我看来,删除应该只是

DELETE [tablename] where [PK] = @param

但它会生成一个包含 4 个 OR 的查询。

DELETE FROM Market
WHERE     (@IsNull_Name = 1) 
AND (Name IS NULL) 
AND (@IsNull_Description = 1) 
AND (Description IS NULL) 
AND (MarketId = @Original_MarketId) 
OR
(@IsNull_Name = 1) 
AND (Name IS NULL) 
AND (Description = @Original_Description) 
AND (MarketId = @Original_MarketId) 
OR
(Name = @Original_Name) 
AND (@IsNull_Description = 1) 
AND (Description IS NULL) 
AND (MarketId = @Original_MarketId) 
OR
(Name = @Original_Name) 
AND (Description = @Original_Description) 
AND (MarketId = @Original_MarketId)

数据集工具几乎坚持要进行涉及PK/Indexes的查询,为什么会生成如此复杂的代码?

这是“最佳实践”代码吗,如果有人可以指导我参考一些文档吗?

当然,最简单的情况是需要 99% 的代码,另外 1% 应该是您需要编辑自动生成的代码或添加我们自己的代码。

【问题讨论】:

    标签: sql auto-generate datatableadapters


    【解决方案1】:

    这是基于乐观并发 - 它需要在删除之前检查所有值是否相同。

    【讨论】:

    • 现在您已经说过大查询更有意义。我遇到的问题是将 FormView 绑定到使用上述删除语句的 DataSource - 它没有执行删除。也许 FV 没有在 DeleteTemplate 中绑定正确的值:- 我会检查一下。
    猜你喜欢
    • 2022-01-17
    • 2023-03-06
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多