如何轻松地重新排序 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体验(18)——LINQ to SQL语句之视图和继承支持