如何防止Entity Designer按字母顺序编写列?

时间:2011-04-09 18:56:52

标签: visual-studio-2010 entity-framework-4

我在SQL Designer中创建了3个表 -

Community { ID, Name, Description }
Audience { ID, Type, Value}
Community_Audience { CommunityID, AudienceID }

我将此架构导入Visual Studio 2010中的EDMX设计器,在设计器中右键单击并选择“从模型生成数据库”以编写架构脚本。当我查看生成的脚本时,它正在编写脚本 -

Community { ID, Name, Description } -- Column names not sorted alphabetically.
Audience { ID, Type, Value} -- Column names not sorted alphabetically.
Community_Audience { AudienceID, CommunityID } -- Column names sorted alphabetically. CommunityID is after AudienceID. 

这导致我的数据播种脚本失败,因为我没有指定列名 - INSERT INTO Community_Audience {'guid','guid'}

我知道我可以更新我的数据播种脚本以包含列名或重新安排edmx文件中的基础xml但我不想走那条路,因为我将清除实体(表) edmx并且经常从数据库导入新模式。我想知道是否有设置会阻止设计师按字母顺序排序。奇怪的是,它只发生在交叉引用表(如Community_Audience)而不是主要表(如本例中的社区和受众)。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您已经描述了两种选择 - 要么修改INSERT语句,这些语句不应该那么难以及您只需要执行一次或尝试修改EDMX(如果您使用数据库中的刷新模型,则会出错)。实体设计器实际上没有定义列中排序的功能。生成数据库脚本由单独的组件驱动。它基于Windows Workflow Foundation 4,它可以替换为您的自定义工作流程,但是没有任何实际原因需要进行大量工作。解决方案是修改INSERT语句。

我不明白为什么你在同一时间使用模型生成数据库以及从数据库刷新模型。