gpt4 book ai didi

c# - Entity Framework 6 没有导航属性的一对多关系

转载 作者:行者123 更新时间:2023-11-30 12:45:54 25 4
gpt4 key购买 nike

我有 2 个表:A 和 B 具有一对多关系,这些表在 EF 6 中实现如下:

public class A
{
[Key]
public int AID {get;set;}
public string AName {get;set;}
}

public class B
{
[Key]
public int BID {get;set;}
public string BName {get;set;}
public int AID {get;set;}

[ForeignKey("AID")]
public A InstanceOfClassA {get;set;}
}

问题

当我从上下文中检索 B 时,InstanceOfClassA 始终为 null。

假设

因为在A实体中没有引用B的导航属性,因此, Entity Framework 在检索时不会延迟加载A >B.

期待

因为我不需要从 A 访问 B,所以我想去掉 A 中的导航属性,但仍然保留从 B 延迟加载 A 的能力。

注意

我看到了来自 Map Many to Many relationship without navigation property 的帖子但这不适合我的情况。

无论如何我可以强制从 B 延迟加载 A 而无需使用显式 include var b = context.B.Include(x => x .InstanceOfClassA);?也许自定义约定

编辑 1

我尝试使用约定如下,但仍然没有成功:

modelbuilder.Entity<B>()
.HasRequired<A>(x => x.InstanceOfClassA);

最佳答案

要使延迟加载正常工作,您必须使用 virtual 关键字标记导航属性:

[ForeignKey("AID")]
public virtual A InstanceOfClassA {get;set;}

关于c# - Entity Framework 6 没有导航属性的一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22240489/

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