一对多关系外键计数

one-to-many relationship foreign key count

public class User
{
    [Key]
    public int id { get; set; } //PK

    public string emailAddress { get; set; }

    public List<Task> tasks { get; set; }

}
public class Task
{
    [Key]
    public int id { get; set; } //PK 

    public string name { get; set; }

    //Navigation Properties
    public User user{ get; set; }

    public int userId { get; set; }

}

我已经按照 MSDN 教程配置了上面的两个模型。那么如何正确获取与用户关联的任务数?

我试过 context.users.Where(u => u.emailAddress == email).FirstOrDefaultAsync().tasks.count; 但它给了我一个关于任务对象的空指针引用。 然后我尝试 context.tasks.Where(o=>o.user.emailAddress==email).Count() 给我正确的号码所以它有效

所以我想知道为什么列表是空引用而不是包含一些元素的列表?谢谢指教

尝试以下查询:

var cnt = context.users
   .Where(u => u.emailAddress == email)
   .Select(u => u.tasks.Count())
   .FirstOrDefault();

您必须使用 LINQ 扩展 Count() 而不是 List.Count

我认为您使用的是 entity framework 和预加载 (description)。在这种情况下,您应该显式调用 Include() 方法来加载所有用户任务。示例:

await (context.users.Where(u => u.emailAddress == email).Include(u => u.Tasks).FirstOrDefaultAsync()).Tasks.Count();

UPD:不适用于生产