我们使用SQL Server数据工具项目(.sqlproj)管理数据库的结构,在Visual Studio中创建新对象并将它们发布到SQL Server实例(直接或通过生成发布脚本)。
SSDT使用格式
自动命名FKFK_ThisTable_ThatTable
我们使用SqlMetal生成Linq-to-SQL DBML。
<Table Name="dbo.Foo" Member="Foos">
<Type Name="Foo">
<Column Name="FooID" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
<Column Name="Value" Type="System.String" DbType="VarChar(50)" CanBeNull="true" />
<Column Name="BarID" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
<Association Name="FK_Foo_Bar" Member="Bar" ThisKey="BarID" OtherKey="BarID" Type="Bar" IsForeignKey="true" DeleteOnNull="true" />
</Type>
</Table>
如果我在VisualStudio的设计器中打开DBML,修改图表布局并保存,DBML现在包含
<Association Name="Bar_Foo" Member="Bar" ThisKey="BarID" OtherKey="BarID" Type="Bar" IsForeignKey="true" DeleteOnNull="true" />
这意味着由于MSLinqToSQLGenerator进行了不必要的更改以及在运行SqlMetal后恢复原始名称,因此TFS源代码控制中的DBML文件的历史记录要难得多。
如何阻止Visual Studio的DBML Designer修改FK名称?