我正在嘗試獲取所有用戶無人機的資料,但 ef 核心回傳空集合。
public class User : AuditableEntity
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string UserData { get; set; }
public bool IsActive { get; set; }
public bool IsAdmin { get; set; }
public DateTime LastActivity { get; set; }
public IEnumerable<Drone> Drones { get; set; }
}
public class Drone : AuditableEntity
{
public Guid Id { get; set; }
public string CustomName { get; set; }
public string Model { get; set; }
public int Serial { get; set; }
public bool IsActive { get; set; }
public string DroneData { get; set; }
public virtual User User { get; set; }
}
并且user.Drones總是有空值,我無法獲取和顯示資料,但是這行驗證代碼
if (user.Drones.Contains(drone))
return ("This drone has been alredy registred", false);
告訴我,user.Drones包含值。為什么我應該這樣做,user.Drones收集?
uj5u.com熱心網友回復:
Ef 使用延遲加載,加載必須使用 Include 的子實體
var user = context.Users.Where (i=> i.Id==userId)
.Include(i=>i.Drones)
.FirstOrDefault();
//or if you want just drones
var userDrones=context.Users.Where (i=> i.Id==userId)
.Select(i=>i.Drones)
.FirstOrDefault();
但最好將外鍵 UserId 添加到 Drone 顯式
public class Drone : AuditableEntity
{
public Guid Id { get; set; }
.....
public Guid UserId { get; set; }
public virtual User User { get; set; }
}
并使用此查詢
var userDrones=context.Drones.Where (i=> i.UserId==userId).ToList();
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408712.html
標籤:
