性別、住所タイプ、連絡先タイプなどのあらゆる種類の制御値ルックアップデータを含む参照テーブルがあります。多くのテーブルには、この参照テーブルへの複数の外部キーがあります。
また、同じテーブルへの2つの外部キーを持つ多対多の関連付けテーブルもあります。残念ながら、これらのテーブルがLinqモデルにプルされ、DBMLが生成されると、SQLMetalは外部キー列の名前や制約の名前を調べず、ターゲットテーブルのみを調べます。そのため、Reference1、Reference2、...というメンバーになってしまいます。メンテナンスはあまり簡単ではありません。例:
<Association Name="tb_reference_tb_account" Member="tb_reference" <======
ThisKey="shipping_preference_type_id" OtherKey="id" Type="tb_reference"
IsForeignKey="true" />
<Association Name="tb_reference_tb_account1" Member="tb_reference1" <======
ThisKey="status_type_id" OtherKey="id" Type="tb_reference"
IsForeignKey="true" />
もちろん、DBMLにアクセスしてメンバー名を手動で変更することはできますが、これは、データベーススキーマをラウンドトリップできなくなったことを意味します。これは、まだ進化しているモデルの現段階ではオプションではありません。参照テーブルをn個の個別のテーブルに分割することも望ましくありません。
おそらく、世代ごとにXMLに対して実行され、メンバー名をThisKeyから派生したものに置き換えるスクリプトを作成できます(これらのタイプのキーの命名規則に準拠しているため)。誰かがこの問題のより良い解決策を見つけましたか?