最近我一直在尝试使用Dapper,但是在获取其他表中的数据时遇到了问题。
我的数据库有两个表:Users和Post。我为这些表创建了两个类。
我的User类:
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; }
要访问用户名属性,我应该创建一个具有用户名字段的新类吗?任何输入都将不胜感激。