如果EF中的父实体不是子实体,如何验证

本文关键字:实体 何验证 验证 EF 如果 | 更新日期: 2023-09-27 18:29:40

假设我有一对多关系表(Ex User-Rent)

public class User 
{
        public string UserName { get; set; }
        public string Email { get; set; }
        public string Password { get; set; }
        public virtual ICollection<Rent> Rents { get; set; }  
}
public class Rent 
{
        public Int64 VideoId { get; set; }
        public Int64 UserId { get; set; }
        public virtual User User{get; set;}
        public int RentingLength { get; set; }
        public int RentingCost { get; set; }
}

我想删除一条User记录。在此之前,我想检查User是否有对Rent的引用。

我拥有的是:

context.Users.Include("Rents").ToList();

则检查CCD_ 4列表是否为空。

有更好的方法吗?

谢谢。

如果EF中的父实体不是子实体,如何验证

context.Users.Include("Rents").ToList();将实现您的查询,获取所有用户。最好的方式应该是context.Rent.Where(r => r.userId == DesiredUserId).Any()。如果true,则用户有租金。

您在导航属性中使用Virtual关键字,这意味着租金将自动包含在您的用户查询中。因此,您不需要显式包含。

所以你可以直接做

context.Users.Find(Id)

它还将包括主密钥id为的用户的Rent

像这样使用Any检查记录是否退出

public bool Exists(int YourUserId)
{
    dbcontext.Rent.Any(e => e.UserId == YourUserId);
}