使用1:1模型返回的空数据

时间:2019-06-03 06:16:48

标签: sql-server asp.net-mvc

我有两个SQL表,User和UserType与UserType作为外键结合在一起,它们各自的模型在ASP中。据我了解,这应该是1:1的关系(如果我错了,请纠正我)。设置为一种用户类型的唯一用户(即admin,super admin,user等)。

当我尝试检索用户列表时,它在属性UserType上返回null。

我曾经使用Google来达到这个目的,但我正在努力解决此特定问题。

有一次我收到一条错误消息,指出:“无法确定关联的主要终点”。为了解决这个问题,我同时在两个模型中分别包含了必需的注释(无效)和外键注释(无效)。

这是我到目前为止所拥有的。

[Table("Users", Schema = "dbo")]
public class Users
{
    [Key, ForeignKey("UserType")]
    public Guid Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string ContactNumber { get; set; }
    public UserType UserType { get; set; }
    public string IsActive { get; set; }
}

[Table("UserType", Schema = "dbo")]
public class UserType
{
    [Key]
    public Guid Id { get; set; }
    public string Type { get; set; }
    public string Description { get; set; }
    public string IsActive { get; set; }
    public Users Users { get; set; }
}

我正在使用下面的LINQ方法检索数据:

public PagedTables<Users> GetAllUsers(Pagination pagination)
{
    using (var db = new DbContext())
    {
        var user = new PagedTables<Users>()
        {
            Data = db.Users.OrderBy(U => U.Id).Skip(pagination.Page).Take(pagination.Limit).ToList(),
            Count = db.Users.Count()
        };

        return user;
    }
}

用户var上的断点显示属性UserType返回null。我希望分配的用户类型可以加入该用户。

任何帮助将不胜感激。谢谢

1 个答案:

答案 0 :(得分:0)

我的EF背景是数据库优先的,但是如果您渴望加载(即不是延迟加载),那么您是否缺少Include来告诉LINQ去获取UserType?像这样的东西

Data = db.Users.OrderBy(U => U.Id).Skip(pagination.Page).Take(pagination.Limit).Include(U => U.UserType).ToList(),