Я недавно играл с dapper, но у меня возникла проблема с получением данных из других таблиц.Dapper - ссылка на объект не установлена в экземпляр объекта
В моей базе данных есть две таблицы, пользователи и почта. Я создал два класса для этих таблиц.
Мой класс Пользователь
public class User
{
public int UserId { get; set; }
public string Username { get; set; }
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime JoinDate { get; set; }
}
Мои сообщения класс
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public DateTime PublishDate { get; set; }
public int UserId { get; set; }
public User User { get; set; }
}
Это мой запрос, чтобы извлечь все почтовые данные из моей базы данных, а также получить имя пользователя, который создал этот пост.
public IEnumerable<Post> GetPosts()
{
string myQuery = "SELECT p.Title, p.PublishDate, p.PostId, p.UserId, u.Username FROM Post p INNER JOIN Users u ON p.UserId = u.UserId";
sqlConnection.Open();
var posts = sqlConnection.Query<Post>(myQuery);
return posts;
}
Вот мой код представления, где я хочу, чтобы отобразить информацию:
@model IEnumerable<MvcDapperIntro.Models.Post>
@{
ViewBag.Title = "Posts";
}
@foreach (var post in Model)
{
<h3>@post.Title</h3>
<p>@post.PublishDate.ToString("dd/MM/yyyy")</p>
<p>@post.User.Username</p>
}
Однако, когда я запускаю мой код, я получаю «Ссылка на объект не указывает на экземпляр объекта» ошибка. Является ли это потому, что я не должен использовать:
public User User { get; set; }
доступ к свойству имя пользователя, или я должен создать новый класс с полем имени пользователя. Любой вход был бы оценен.
Ну, есть трассировки стека, что намекает на то, что не удается? –