C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

データベースファーストでEntityFramework /青い子ブタ (18/11/02(Fri) 15:19) #89160
Re[1]: データベースファーストでEntityFramework /WebSurfer (18/11/02(Fri) 16:08) #89162
  └ Re[2]: データベースファーストでEntityFramework /青い子ブタ (18/11/02(Fri) 16:26) #89164
    ├ Re[3]: データベースファーストでEntityFramework /WebSurfer (18/11/02(Fri) 17:09) #89166
    └ Re[3]: データベースファーストでEntityFramework /WebSurfer (18/11/06(Tue) 10:46) #89190


親記事 / ▼[ 89162 ]
■89160 / 親階層)   データベースファーストでEntityFramework
□投稿者/ 青い子ブタ (9回)-(2018/11/02(Fri) 15:19:36)

分類:[.NET 全般] 

ASP.NET MVC 5
VisualStudio2017
Fw 4.6.2
C#


データベースファーストでEntityFrameworkを使用しています。

データベースに以下のようなテーブルがあるとします。
■Personテーブル
・PersonId(主キー)
・ClassId
・Name

■Classテーブル
・AppId(主キー)
・ClassId(主キー)
・Name

上記のテーブルからデータを取得したいと思っています。
SQLで書くと以下のようになります
SELECT
	P.PersonId, P.ClassId, C.Name
FROM Person P
	LEFT JOIN Class C
		ON  P.ClassId = C.ClassId
		AND C.AppId = 1  <--画面の選択値により値は変わる。
		

エンティティモデルデザイナで
データベースの上記のテーブルからモデルを作成し
アソシエーションを追加しようとすると
ClassテーブルのAppIdと関連付けるものがなく、アソシエーションを追加できません。

上記のような場合、とのようにアソシエーションを追加すればよいでしょうか?

[ □ Tree ] 返信 編集キー/

▲[ 89160 ] / ▼[ 89164 ]
■89162 / 1階層)  Re[1]: データベースファーストでEntityFramework
□投稿者/ WebSurfer (1645回)-(2018/11/02(Fri) 16:08:12)
No89160 (青い子ブタ さん) に返信

DB サーバーは何ですか? LocalDB? SQL Server? そのバージョンは?
テーブル間に外部キーが設定してありますか? そして、ナビゲーションプロパティはどのように生成されてますか?
[ 親 89160 / □ Tree ] 返信 編集キー/

▲[ 89162 ] / ▼[ 89166 ] ▼[ 89190 ]
■89164 / 2階層)  Re[2]: データベースファーストでEntityFramework
□投稿者/ 青い子ブタ (10回)-(2018/11/02(Fri) 16:26:42)
No89162 (WebSurfer さん) に返信
> ■No89160 (青い子ブタ さん) に返信
>
> DB サーバーは何ですか? LocalDB? SQL Server? そのバージョンは?
> テーブル間に外部キーが設定してありますか? そして、ナビゲーションプロパティはどのように生成されてますか?


DBはOracleです。
テーブル間に外部キーは設定されていません。

アソシエーションは手動で張っています。
[ 親 89160 / □ Tree ] 返信 編集キー/

▲[ 89164 ] / 返信無し
■89166 / 3階層)  Re[3]: データベースファーストでEntityFramework
□投稿者/ WebSurfer (1646回)-(2018/11/02(Fri) 17:09:34)
No89164 (青い子ブタ さん) に返信

> DBはOracleです。
> テーブル間に外部キーは設定されていません。

Oracle は触ったこともないので分かりませんが・・・

LocalDB や SQL Server の場合と同様に Visual Studio のウィザードを使って生成した
EDM から List<T> 型のオブジェクトを作れるのであれば、以下の記事を参考に左外部結
合した結果が得られると思います。

左外部結合の実行
https://docs.microsoft.com/ja-jp/dotnet/csharp/linq/perform-left-outer-joins

(外部キーが張ってあってナビゲーションプロパティが生成されていれば別の方法がありま
す。今回のケースでは関係ないですが)
[ 親 89160 / □ Tree ] 返信 編集キー/

▲[ 89164 ] / 返信無し
■89190 / 3階層)  Re[3]: データベースファーストでEntityFramework
□投稿者/ WebSurfer (1648回)-(2018/11/06(Tue) 10:46:56)
No89164 (青い子ブタ さん) に返信

No89166 の私のレスに対するフィードバックは返せませんか?

たとえ「何を言ってるか分からん、役に立たん」というフィードバックでも
無言に比べれば∞倍マシだと自分は思うのですが。
[ 親 89160 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -