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

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

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

データベースファーストでEntityFramework

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■89160 / inTopicNo.1)   データベースファーストで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と関連付けるものがなく、アソシエーションを追加できません。

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

引用返信 編集キー/
■89162 / inTopicNo.2)  Re[1]: データベースファーストでEntityFramework
□投稿者/ WebSurfer (1645回)-(2018/11/02(Fri) 16:08:12)
No89160 (青い子ブタ さん) に返信

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


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

アソシエーションは手動で張っています。
引用返信 編集キー/
■89166 / inTopicNo.4)  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

(外部キーが張ってあってナビゲーションプロパティが生成されていれば別の方法がありま
す。今回のケースでは関係ないですが)
引用返信 編集キー/
■89190 / inTopicNo.5)  Re[3]: データベースファーストでEntityFramework
□投稿者/ WebSurfer (1648回)-(2018/11/06(Tue) 10:46:56)
No89164 (青い子ブタ さん) に返信

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

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

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ