如何轻松地重新排序 LINQ to SQL 设计器中的列?

Posted

技术标签:

【中文标题】如何轻松地重新排序 LINQ to SQL 设计器中的列?【英文标题】:How can you easily reorder columns in LINQ to SQL designer? 【发布时间】:2010-09-07 11:06:46 【问题描述】:

在使用 LINQ to SQL 设计器设计 LINQ 类时,我有时需要对类重新排序,以使 DataGridView 中的结果列以不同的顺序出现。不幸的是,这似乎非常困难。您需要剪切和粘贴有关的属性,或删除它们并手动重新插入。

知道您可以很容易地在 DataGridView 中重新排序列,但这会导致大量的硬编码,我希望设计器与网格相匹配。

有没有人知道任何更简单的方法来实现这一点,或者剪切/粘贴是唯一可用的方法吗?

我尝试手动编辑 .designer.cs 文件,但在那里重新排序属性似乎没有任何作用!

编辑: 只是说清楚 - 我想重新排序 LINQ to SQL 设计器中的内容,而不是表中的内容。我在订购时没有出错,需要恢复到原始表格布局;而是我有一个表,我想在 Visual Studio 中拥有与在 SQL Server 中不同的排序。

【问题讨论】:

【参考方案1】:

使用 Linq-to-Sql,您可以通过以下方式使 DataGridView 中的列与原始表中的列不同:

    在您的 Linq 查询中,按照您想要的顺序提取所需的列,并将它们存储在 var 中。然后自动生成的列应该在 DataGridView 中按该顺序显示它们 在 DataGridView 中使用模板列 不要在 Linq-to-Sql 设计图面上使用拖放来创建实体。而是手动创建它们并使用表和列属性将它们与数据库表相关联

据我所知,设计器本身没有拖放列重新排序

【讨论】:

【参考方案2】:

在您最喜欢的 XML 编辑器中打开 [DataClasses].dbml 文件,然后对表的 [Column] 元素重新排序。在 Visual Studio 中保存并重新打开(或重新加载)设计器。设计器中显示的列的顺序将是固定的。

【讨论】:

【参考方案3】:

如果您处于对数据库中的列进行重新排序的场景中,并且您现在希望将这个新顺序反映在设计器中,我认为您必须从设计器中删除表然后将其放入再次进入。或者,如果您使用SqlMetal 生成您的 Linq-to-Sql 类,请在您的数据库上重新运行它并使用新生成的文件。

【讨论】:

删除+重新插入如何帮助我重新排序列?... SqlMetal 是什么? 抱歉,我的问题可能表述有误 - 我想重新排序 原始表格布局,使其在 DataGridView 中的显示顺序与在表格中不同。跨度>

以上是关于如何轻松地重新排序 LINQ to SQL 设计器中的列?的主要内容,如果未能解决你的问题,请参考以下文章

LINQ to SQL 设计器和地理数据类型

LINQ体验(18)——LINQ to SQL语句之视图和继承支持

Linq to SQL - 如何将数字作为字符串排序?

Linq-to-SQL 数据库文件为空

如何从 LINQ 转移到 SQL 到“LINQ 到 WCF”?

如何改进 Linq-To-Sql 代码