Как получить все данные, используя объединение трех таблиц, используя Entity Framework - PullRequest
0 голосов
/ 26 апреля 2019

Я получаю эту ошибку:

System.NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта

Как разрешить это исключение?

Присоединение к контроллеру запросов:

var Cs = new List<MyModel>();

using (Join3Entities1 db = new Join3Entities1())
{
    DateTime start1 = DateTime.Now;
    ViewBag.Start = "Start Time :" + start1;
    Cs = (from e in db.Students
          join p in db.Marks on e.S_ID equals p.S_ID
          join t in db.Details on p.School_ID equals t.School_ID
          where p.Score > 50
          select new MyModel
                  {
                      S_Name = e.S_Name,
                      Score = (int)p.Score,
                      Status = p.Status,
                      Address_City = t.Address_City,
                      Email_ID = t.Email_ID,
                      Accomplishments = t.Accomplishments
                  }).ToList();
               DateTime end1 = DateTime.Now;
               ViewBag.end = "End Time:" + end1;
               TimeSpan time1 = end1 - start1;
               ViewBag.time = "TimeSpan:" + time1;
        }
        return View();

приведенный выше код предназначен для объединения трех таблиц, которые я написал в разделе контроллера

модель: открытый класс MyModel {открытая строка S_Name {get;задавать;} public int Score {get;задавать;} публичная строка Status {get;задавать;} публичная строка Address_City {get;задавать;} публичная строка Email_ID {get;задавать;} публичная строка Accomplishments {get;задавать;}}

view:

@model IEnumerable<Join3table.Models.MyModel>
@{
   ViewBag.Title = "Home Page";
 }

@foreach (var per in Model)
{
    <tr>
        <td>@per.S_Name</td>
        <td>@per.Score</td>
        <td>@per.Status</td>
        <td>@per.Address_City</td>
        <td>@per.Email_ID </td>
        <td>@per.Accomplishments</td>
    </tr>
}

</tbody>
</table>

Я создал три таблицы ученика, отметку и детали с отношением первичного и внешнего ключа

1 Ответ

0 голосов
/ 26 апреля 2019

вместо того, чтобы делать select new model, попробуйте возвращать каждую таблицу одну за другой, чтобы увидеть, откуда конкретно исходит nullref, таким образом, вы можете сузить его.

еще один вариант набезопасная сторона - убедиться, что nullrefcheck перед вызовом каждого столбца S_Name = e != null && !string.isNullOrEmpty(e.S_Name) ? e.S_Name : string.Empty;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...