【问题标题】:LinqPad adds an S to the end of every tableLinqPad 在每个表的末尾添加一个 S
【发布时间】:2011-10-20 08:33:54
【问题描述】:

我刚刚下载了 LinqPad,以探索在我正在处理的应用程序中使用 Linq 查询的好处,但是当我查看左侧列中的数据库表时,LinqPad 会在我的所有表上显示一个“s”最后,例如 CategoryTbl 变成 CategoryTbls 但是当我在 SQL 管理工作室查看我的数据库时,表名显示正确。

尽管任何应以 S 结尾的表,即客户端保持不变。

当我执行 Linq 查询时,我必须针对 CategoryTbls 执行它,但必须针对 CategoryTbl 执行 SQL 查询。

我只是想知道为什么会发生这种情况,是错误还是功能?如果它是一个功能,为什么?

谢谢

【问题讨论】:

    标签: linq linq-to-sql linqpad


    【解决方案1】:

    来自LINQPad FAQ的第一个问题:

    为什么 LINQPad 将表和子关联属性复数?我可以关闭它吗?

    复数子关联属性(同时保持父关联单一)可以实现最自然的查询,这也是 Visual Studio 在构建类型化 DataContexts 时默认执行的操作。

    要关闭复数,请在添加数据库连接时取消选中“复数”选项。 (如果已创建连接,请右键单击它以编辑连接属性)。

    【讨论】:

    • 谢谢,哈哈,我没想到常见问题解答,用谷歌搜索了一下,我得到了错误消息,但得到了一些相当通用的结果。
    【解决方案2】:

    这也是 LINQ2SQL 生成的工件的标准行为 - DataContext 上的 IEnumerable 是 [TableName],实体是 [TableName]。所以你的 linq 查询通常是这样的。

    List<Category> categoryList = context.Categories.Where(cat => somePredicateOnCat).ToList();
    

    这通常有助于直观阅读。 您会考虑从您的表命名标准中删除匈牙利语“tbl”后缀吗?

    【讨论】:

      猜你喜欢
      • 2013-05-25
      • 2010-11-25
      • 1970-01-01
      • 2016-01-03
      • 1970-01-01
      • 2020-09-11
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      相关资源
      最近更新 更多