teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

本質問には関係ない部分の削除、誤記修正

2020/10/01 14:13

投稿

hayato208
hayato208

スコア19

title CHANGED
File without changes
body CHANGED
@@ -1,8 +1,9 @@
1
1
  ### 前提・実現したいこと
2
2
  前提
3
- [.NETアプリケーション開発入門](http://kazunori-kimura.github.io/how-to-develop-dot-net-apps/asp-101.html)参考にDB Firstにて2つのView”StudentInfoes”、”UserInfoes”を作成
3
+ Controllerに該当するStudentInfoesController.cs、Modelに該当するStudentInfo.cs、Viewに該当するIndex.chtmlを作成
4
+ ・DBのリレーションは下図の通り
4
5
  実現したいこと
5
- StudentInfo.cshtmlにてUserInfoテーブルのデータを取得・表示したい
6
+ Index.cshtmlにてUserInfoテーブルのデータを取得・表示したい
6
7
  DBは下図の通りです。
7
8
  ![イメージ説明](3a399ffeea84a309ef5b99114e024a1d.png)
8
9
 
@@ -11,8 +12,33 @@
11
12
 
12
13
  ### 該当のソースコード
13
14
 
15
+ DBは下記の通りUserInfoの外部キーにStudentIdを据えています。
16
+ UserInfo
17
+ ```
18
+ CREATE TABLE [dbo].[UserInfo] (
19
+ [StudentId] INT NOT NULL,
20
+ [UserInfoId] INT NOT NULL,
21
+ [ClassName] NVARCHAR (128) NULL,
22
+ PRIMARY KEY CLUSTERED ([UserInfoId] ASC),
23
+ CONSTRAINT [FK_UserInfo_ToTable_3] FOREIGN KEY ([StudentId]) REFERENCES [dbo].[StudentInfo] ([StudentId])
24
+ );
25
+ ```
26
+ StudentInfo
27
+ ```
28
+ CREATE TABLE [dbo].[StudentInfo] (
29
+ [StudentId] INT NOT NULL,
14
- *いずれも、StudentInfoのMVC、またソースは該当箇所のみ抜粋
30
+ [StudentName] NVARCHAR (128) NULL,
31
+ PRIMARY KEY CLUSTERED ([StudentId] ASC)
32
+ );
33
+ ```
34
+
35
+ ControllerではUserInfoと内部結合しており、SELECTにてStudentId,StudentName,ClassNameを取得、Index.cshtmlにアクセスした際、StudentName,ClassNameを表示する処理を行いたいです。
36
+ ここで、StudentId,StudentNameは正常に取得・表示出来ておりますが、ClassNameはNULLを返している状態です。
37
+ *該当箇所のみ抜粋
38
+
15
- ```Controllers
39
+ Controller部分
40
+ StudentInfoesController.cs
41
+ ```C#
16
42
  public ActionResult Index()
17
43
  {
18
44
  List<StudentInfo> model = null;
@@ -21,7 +47,7 @@
21
47
  StudentInfo.StudentId,
22
48
  StudentInfo.StudentName,
23
49
  UserInfo.ClassName
24
- FROM
50
+ INNER FROM
25
51
  StudentInfo
26
52
  JOIN
27
53
  UserInfo
@@ -31,22 +57,45 @@
31
57
  return View(model);
32
58
  }
33
59
  ```
60
+ View部分
61
+ Index.cshtml
62
+ ```C#
63
+ <!DOCTYPE html>
34
64
 
65
+ <html>
35
- ```Index
66
+ <head>
67
+ <meta name="viewport" content="width=device-width" />
68
+ <title>生徒名簿</title>
69
+ </head>
70
+ <body>
36
- @foreach (var item in Model) {
71
+ <table class="table">
37
72
  <tr>
38
- <td>
73
+ <th>
39
- @Html.DisplayFor(modelItem => item.StudentName)
74
+ 生徒名
40
- </td>
75
+ </th>
41
- <td>
76
+ <th>
42
- @Html.DisplayFor(modelItem => item.ClassName)
77
+ クラス名
43
- </td>
78
+ </th>
44
- <td>
45
- </td>
46
79
  </tr>
80
+
81
+ @foreach (var item in Model)
82
+ {
83
+ <tr>
84
+ <td>
85
+ @Html.DisplayFor(modelItem => item.StudentName)
86
+ </td>
87
+ <td>
88
+ @Html.DisplayFor(modelItem => item.ClassName)
89
+ </td>
90
+ </tr>
91
+ }
92
+ </table>
93
+ </body>
94
+ </html>
47
95
  ```
48
-
49
- ```Model
96
+ Model部分
97
+ StudentInfo.cs
98
+ ```C#
50
99
  public partial class StudentInfo
51
100
  {
52
101
  public int StudentId { get; set; }
@@ -62,7 +111,7 @@
62
111
  ・「サーバーエクスプローラー」→右クリック→「新しいクエリ」にてSQL単体を実行させたところ、ClassNameは取得出来ていた。
63
112
  ・SQL文にブレークポイントを置いて確かめたところ、ClassNameはNULLを返した。
64
113
  ・StudentInfoにて実行したCRUDををUserInfoでも実行したところ、StudentInfoのデータは取得・表示できた。
65
- 以上より、多重度の違いによってデータの取得・表示が異なるのでしょうか。
114
+ 以上より、多重度が関係していると思ったですが、多重度の違いによってデータの取得・表示が異なるのでしょうか。
66
115
  助言いただけると幸いです、よろしくお願いいたします。
67
116
 
68
117