SQL に 1 対 1 の関係を持つ 2 つのテーブル (Address
と) があるとします。Phone
対応する linq を sql クラスに作成し、関連付けを次のように変更しました。OneToOne
子オブジェクトをフィルタリングして両方のオブジェクトを取得したい。たとえば、正常に機能する次のクエリがあります。
var n = db.Addresses.Where(t => t.Phone.Number == 100);
次の作業を行う方法はありますか:
var n = db.Addresses.Where(t => t.Phone == new Phone(100));
上記のPhone
クラス コンストラクターは、Number
プロパティを初期化します。発行されたクエリには、Phones テーブルを ID (主キー) でフィルター処理する句が含まれていますが、number 句は含まれていません。
Visual Studio で主キーとして設定Number
すると、where 句に含まれますが、id のパラメーター値が 0 であるため、検索では何も返されません。機能したとしてNumber
も、主キーであってはならないため、解決策ではありません。 .