SQL Server Data Tools プロジェクト (.sqlproj) を使用してデータベースの構造を管理し、Visual Studio で新しいオブジェクトを作成して、それらを SQL Server インスタンスに (直接または発行スクリプトを生成して) 発行します。
SSDT は、形式を使用して FK に自動的に名前を付けます
FK_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 デザイナが FK 名を変更しないようにするにはどうすればよいですか?