我刚刚下载了LinqPad,以探索在我正在处理的应用程序中使用Linq查询的好处,但是当我在左侧列中查看我的数据库表时,LinqPad会显示我的所有表格上带有's'的表格。结束,例如CategoryTbl变为CategoryTbls但是当我在SQL管理工作室中查看我的数据库时,表名显示正确。
虽然任何表上应该有一个S,即客户端保持不变。
当我执行Linq查询时,我必须对CategoryTbls执行它,但必须对CategoryTbl执行SQL查询。
我只是想知道为什么会发生这种情况,这是一个错误还是一个功能?如果它是一个特征,为什么?
由于
答案 0 :(得分:12)
来自LINQPad FAQ的第一个问题:
为什么LINQPad会复制表和子关联属性?我可以关掉它吗?
多元化子关联属性(同时保持父关联为单数)可以实现最自然的查询,并且是Visual Studio在构建类型化DataContexts时默认执行的操作。
要关闭复数,请在添加数据库连接时取消选中“Pluralize”选项。 (如果已创建连接,请右键单击它以编辑连接属性。)
答案 1 :(得分:4)
这也是LINQ2SQL生成工件的标准行为 - DataContext上的IEnumerables是[TableName],实体是[TableName]。所以你的linq查询通常会像。
List<Category> categoryList = context.Categories.Where(cat => somePredicateOnCat).ToList();
这通常可以直观阅读。 您是否会考虑将匈牙利语'tbl'后缀从您的表格命名标准中删除?