Asp.net core mvc 简洁-查询多个模型

Asp.net core mvc 简洁-查询多个模型,asp.net-core-mvc,dapper,Asp.net Core Mvc,Dapper,我的查询涉及多个表,根据我在Dapper上读到的内容,我只能找到至少我理解的示例,即查询一个模型 以下是我在Models文件夹下的3个课程: public class User { public string UserName { get; set; } public string UserId { get; set; } public string Email { get; set; } public string Phone { get; set; } }

我的查询涉及多个表,根据我在Dapper上读到的内容,我只能找到至少我理解的示例,即查询一个模型

以下是我在Models文件夹下的3个课程:

public class User
{
    public string UserName { get; set; }
    public string UserId { get; set; }
    public string Email { get; set; }
    public string Phone { get; set; }
}

public class Date
{
    public string UserName { get; set; }
    public string UserCode { get; set; }
    public string LastLogin { get; set; }
}

public class Photo
{
    public class UserName { get; set; }
    public string UserId { get; set; }
    public string PhotoUrl { get; set; }
}
在我的存储库中,我有我的连接代码,然后有一个方法来获取我需要的所有信息,但是这个方法只与用户模型绑定,但是我还需要检索照片,当我尝试创建一个复合类以便在视图中查看用户和照片模型时,它会给我一个错误,说它只需要用户数据视图

public List<User> GetAll()
{
    using (SqlConnection cn = new SqlConnection(connectionString))
    {
        var allResults = cn.Query<User>("SELECT UserName, Email, Phone, (SELECT TOP 1 PhotoPath FROM Photo WHERE User.UserId = Photo.UserId) FROM User)
您的用户类不包含像PhotoPath这样的属性-您希望Dapper将新的/附加值放在哪里


例如,您应该创建新的类ViewModels/UserAndPhoto.cs,它包含您正在选择的所有属性,然后Dapper将成功地从数据库中读取它。

我一直假设类对应于数据库中的表,因为User和Photo是两个不同的表,我认为它们必须是不同的类。不是这样吗?在EntityFramework中-是,在Dapper中-否。它只是按名称将查询中的字段映射到类中的属性-您应该只关心数据类型。类上的字段应该直接反映select语句中返回的列。表是什么并不重要,只有select语句。