0

sqlmetalが生成する関連付け名は、多くのフラストレーションの原因となっています。アソシエーションは、単に「Id」が末尾から外された列名である場合もあれば、外部キー制約名に基づいてアソシエーション名を生成する場合もあります。

これらの名前を生成するためにどのような手順を使用するのかがわかりません。最近のスキーマの変更により、関連付けの名前が再び大幅に変更されたため、これを処理したいと思います。

ある種のチェーンで相互に参照する2つのテーブルがあります。このようなもの:

class In
{
  int Id;
  EntityRef<Out> Yields;    // YieldsId => FK_Out_Source
  EntitySet<Out> In_Source; // FK_In_Source
}
class Out
{
  int Id;
  EntityRef<In> Yields;     // YieldsId => FK_In_Source
  EntitySet<In> Out_Source; // FK_Out_Source
}

これらはスキーマ変更前のクラスであり、InテーブルとOutテーブルの間に追加のFKフィールドがありました。そのフィールドを削除した後、sqlmetalはこれを生成します:

class In
{
  int Id;
  EntityRef<Out> Yields; // YieldsId => FK_Out_Source
  EntitySet<Out> Out;    // FK_In_Source
}
class Out
{
  int Id;
  EntityRef<In> In;         // YieldsId => FK_In_Source
  EntitySet<In> Out_Source; // FK_Out_Source
}

以前のクラスは本来あるべき完全に対称でしたが、生成されたクラスは完全に非対称になりました。誰かがこれを説明できますか?

4

1 に答える 1

0

これには韻や理由がないように思われるので、sqlmetalをラップして関連付け名を書き換えるコマンドラインツールを作成しました。これは私のオープンソースのSasaユーティリティフレームワークに含まれており、sasametalと呼ばれます。

于 2012-11-19T17:27:25.610 に答える