Asp.net core mvc 简洁-查询多个模型
我的查询涉及多个表,根据我在Dapper上读到的内容,我只能找到至少我理解的示例,即查询一个模型 以下是我在Models文件夹下的3个课程: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; } }
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语句。