我有两个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。我希望分配的用户类型可以加入该用户。
任何帮助将不胜感激。谢谢
答案 0 :(得分:0)
我的EF背景是数据库优先的,但是如果您渴望加载(即不是延迟加载),那么您是否缺少Include来告诉LINQ去获取UserType?像这样的东西
Data = db.Users.OrderBy(U => U.Id).Skip(pagination.Page).Take(pagination.Limit).Include(U => U.UserType).ToList(),