gpt4 book ai didi

entity-framework - EF 代码优先相关实体根本不加载

转载 作者:行者123 更新时间:2023-12-04 18:22:32 25 4
gpt4 key购买 nike

我一直无法找到专门解决此问题的其他人,所以就到这里。

我有一个简单的模型,其中一个实体简单地将另一个实体引用为父子关系或一对多关系,定义如下:

public class Parent
{
public int ID { get; private set; }
public string Name { get; private set; }
}

public class Child
{
public int ID { get; private set; }
public string Name { get; private set; }
public virtual Parent Parent { get; private set; }
}

我正在为每个创建特定的映射文件,这些文件对除相关实体之外的所有正常属性都非常有用。它总是出现空值。无论我是否在属性上有虚拟/私有(private)访问器,它都不会加载,除非我先从上下文中单独提取父级的副本。我的映射如下所示:
HasRequired(t => t.Parent).WithMany().Map(t => t.MapKey("ParentID")).WillCascadeOnDelete();

我做错了什么吗?我一生都无法弄清楚这一点。就这样我涵盖了所有基础,我正在加载这样的实体:
Context.Set<Child>().FirstOrDefault(x => x.ID == 1);

最后,我有一些限制:
  • 我不能将模型中的外键作为属性。
  • 我不能从 parent 那里收集 child 。
  • 最佳答案

    我终于弄明白了。经过多次试验和错误,我注意到将无参数构造函数标记为内部,EF 无法创建您的类型的动态代理类,因此禁用所有延迟加载。我有两个构造函数,一个用于 EF 水合对象,另一个带有参数要求调用者创建我的实体。一旦我将签名更改为 protected 内部,它就开始工作了。所以我改变了这个:

    internal Child() {}


    protected internal Child() {}

    关于entity-framework - EF 代码优先相关实体根本不加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10369678/

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