SQL 2008で1対多の関係を持つ2つのテーブルがあります。最初のテーブル(BBD)LINQ to SQLとOR Designerを使用する危険なビジネス?
PK | BBDataID | int
| Floor_Qty | tinyint
| Construct_Year | char(4)
| |など、など
は、すべての建物と第二(BBDCerts)
PKに共通のデータを記述するBBDCertsID | int
| BBDataID | int
|認定タイプ| varchar(20)
|
は、特定の建物の認定資格のコレクションです。したがって、BBDの主キー(BBDataID)は、FK関係を介してBBDCertsの対応するフィールドにマッピングされるが、BBDCertsIDは第2のテーブルの主キーであり、BBDataIDはユニークではないためではない。
私の問題は、BBDテーブルの特定のレコードにアクセスするときに、OR生成データコンテキストを使用して、証明書のリストにアクセスできるようにしたいということです。
Dim vals = (From q in db.BBD
Where q.BBDataID = x
Select q.Floor_Qty, q.Construct_Year, q.BBDCerts).SingleOrDefault
以降、このような特定の証明書にアクセスすることができる:例えば
今vals.BBDCerts.Certification_Type.First
、SQLテーブルがデザインサーフェイスにドロップされたときに作成した自動関連付けが生成されません。 EntityRefアソシエーションは、ドット表記法を使用して他のテーブルにアクセスするために必要です。したがって、ORデザイナを使用して、BBDCerts BBDataIDをプライマリキー(これは実際のデータベースには影響しません)にしてから、関連プロパティを手動で適切なOneToMany設定に変更する必要があります。
このソリューションにアプローチするより良い方法があるかもしれませんが、私の質問は安全です。私はテストの弾圧をしたし、正しい証明書は毎回参照または更新されます。率直に言えば、全部が私を緊張させる。
これは私には正しいと思われますが、手動で関連付けを作成しなければならない理由はわかりません。通常、BBDCertsテーブルの外部キーはそれを生成するのに十分であり、vals.BBDCerts.First()を実行できるはずです。 – Tom