質問

これは多かれ少なかれ一般的な質問であり、特に特定のORMや言語に関するものではありません。この質問は、ORMの好みに関係なく発生します。

多くの関係をマッピングする場合、仲介テーブルを不明瞭にしたり、中間テーブルをモデルの一部にすることができます。仲介テーブルが関係を超えて貴重なデータを持っている場合、マッピングをどのように処理しますか?

次の表を検討してください。

CaseWorker (id, first_name, last_name)
CaseWorkerCases (case_worker_id, case_id, date_opened, date_closed)
Case (id, client_id, field_a, field_b)

プログラマーとして、私は本当にむしろできるでしょう:

CaseWorker.Cases

よりも

CaseWorker.CaseWorkerCases.Cases

一方では、テーブルのケースワークマーサには有用なデータが含まれており、中間テーブルを隠すことで、そのデータへのアクセスが便利ではありません。一方、中間テーブルをナビゲートしなければならないと、ケースにアクセスするという一般的なタスクが厄介に見えます。

1つのソリューションは、モデルの中間テーブルを公開し、ケースワークオブジェクトにラッパープロパティを機能させることです。何かのようなもの:

public IEnumerable<Case> Cases
{
    get{return (from caseWorkerCase in this.CaseWorkerCases
                select caseWorkerCase.Case);}
}

しかし、それも間違っているようです。

役に立ちましたか?

解決

私はあなたの回避策が間違っているとは思わない。これらのモデルの複雑さをコーディングする必要があります どこか.

この正確なトピックに関するブログ投稿があります: プロパティとの多くの関係

他のヒント

多くのマッピングは、中間テーブルを使用した2つの1対多数のマッピングの単なる表記の略語であると考えています。関係に独自の属性がない場合にのみ機能します。ただし、特定のドメインの理解が向上するにつれて、通常、属性を添付するためには、多くのマッピングを分解する必要があることが通常わかります。したがって、最近の私の通常のアプローチは、常に1対多数のマッピングを使用して最初から使用することです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top