私はEntity Frameworkに非常に慣れていないため、そこで使用されている技術用語がわかりません。下手な英語で申し訳ありません。
私は、エンティティ フレームワークとファイルを含むプロジェクトで作業してい.edmx
ます。ファイルにはエンティティが作成されています。
そこで、2 つのエンティティを作成し、TableA と TableB という名前を付けました。pid は TableA のエンティティ キー、cid は TableB のエンティティ キーです。そして、その中に多対一の関係を作りました。つまり、TableA 行 1 は TableB_cid=1 を持つことができ、TableA 行 2 は TableB_cid=2 を持つこともできます
そして、「モデルからデータベースを生成」を行いました
CREATE TABLE [TableA] (
[pid] nvarchar(max) NOT NULL,
[name] nvarchar(max) NOT NULL,
[TableB_cid] nvarchar(max) NOT NULL
);
GO
CREATE TABLE [TableB] (
[cid] nvarchar(max) NOT NULL,
[name] nvarchar(max) NOT NULL
);
pid|name|TableB_cid
--------------------
1 | a | 2
2 | b | 2
3 | c | 1
cid|name
------------
1 | s
2 | f
C#コードで私はこれを書きました、
TableA obj = repository.All().Single(w=>w.pid == "1")
context.Entry<TableA>(obj).Reference<TableB>(o => o.TableB).Load();
これで、cid=1 の TableB が読み込まれます (ただし、cid=2 の TableB を読み込むことでした)。
TableB_cid (TableA) から cid (TableB) ではなく、主キーと主キーが一致していると思います。
だから私が間違っていることを助けてください。
編集:
要するに、テーブル A の非プライマリ列とテーブル B のプライマリ列との関連付けを Entity Framework 4.0 に追加できる方法を探しています。また、linq クエリと結合を使用したくありません。試してみましたが、edmxファイルでそれを実行できる方法またはオプションを見つけることができません。
ありがとう、
M