gpt4 book ai didi

c# - Entity Framework 子项为空

转载 作者:行者123 更新时间:2023-11-30 21:00:22 24 4
gpt4 key购买 nike

我是 EntityFramework 的新手,所以这个问题可能有点愚蠢,但我尝试用谷歌搜索但一无所获。

我在数据库中有一张表:

    [Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
[Required]
public UserProfile Owner { get; set; }
[Required]
public string Mask { get; set; }
[Required]
public string Key { get; set; }
public DateTime Generated { get; set; }
public DateTime DateTo { get; set; }
public bool isElite { get; set; }

其中 UserProfile Owner 是指向另一个表的链接。当我做出这样的选择时:

 db.Keys.Where(s=>s.Owner.UserId == WebSecurity.CurrentUserId && s.DateTo > DateTime.UtcNow).ToList()

它运行良好,但当我试图通过许可证联系所有者时,它始终为空。有人可以帮助如何让所有者获得许可证吗?感谢您的宝贵时间!

编辑:我想我犯了一个错误并且发布了一个不正确的问题。我真正需要的是当我通过其 ID 搜索许可证时: 许可证 license = db.Keys.Find(id);我可以让所有者喜欢: var a = license.Owner;我以前使用过 Active Record,它会“按需”加载此类数据(仅当我调用它时)。我可以用 EF 以某种方式做到这一点吗?

最佳答案

使用您拥有的代码,您可以通过在许可证类中将其标记为 virtual 来延迟加载 Owner。

由于您仍在上下文中(使用 db),EF 将自动调用以补充 Owner

有关加载相关实体的好文章 check this out .

编辑(使用 linq 查询):

这是一个 linq 查询的示例,但您仍然可能需要延迟或急切加载 Owners。

var query = from k in db.Keys
where k.Owner.UserId.Equals(WebSecurity.CurrentUserId)
&& k.DateTo > DateTime.UtcNow
select k;

var list = query.ToList();

关于c# - Entity Framework 子项为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14939450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com