为什么导航属性有时会返回null?

我有两个模型

public class Indicator
{
    public long IndicatorID { get; set; }
    public string Name { get; set; }
    public int MaxPoint { get; set; }
    public string Comment { get; set; }
    public DateTime DateChanged { get; set; }
    public DateTime DateCreated { get; set; }

    public virtual IList<CalculationType> CalculationTypes { get; set; }
}

public class CalculationType
{
    public long CalculationTypeID { get; set; }
    public string UnitName { get; set; }
    public int Point { get; set; }
    public DateTime DateCreated { get; set; }
    public DateTime DateChanged { get; set; }

    public virtual Indicator Indicator { get; set; }
}

我有数据库工厂

public class DatabaseFactory
{
    private StankinQuestionnaireEntities dataContext;
    public StankinQuestionnaireEntities Get()
    {
        return dataContext ?? (dataContext = new StankinQuestionnaireEntities());
    }
}

和引用数据库工厂的属性

protected StankinQuestionnaireEntities DataContext
{
    get { return dataContext ?? (dataContext = DatabaseFactory.Get()); }
}

我使用Autofac和regiser DatabaseFactory

builder.RegisterType<DatabaseFactory>().As<IDatabaseFactory>().InstancePerRequest();

在我的存储库中,我尝试通过两种方式从导航属性获取数据

在此处输入图片说明

第一行工作正常(CalculationType包含一个元素)

在此处输入图片说明

但是第二行在属性CalculationType上返回null

在此处输入图片说明

为什么?

更新我发现,如果删除行“ .InstancePerRequest()”,则一切正常。但是我不适合这个。

UPDATE2由于某种原因,EF未创建代理类

维克塔·哲拉舒克(Viktar Tserashchuk)

您的数据库上下文肯定具有不同的ProxyCreationEnabled属性值。

如果在屏幕快照中查看所选择实体的类型,则可以看到第一个实体的类型为System.Data.Entity.DynamicProxies.Indicator_E ...,第二个实体的类型为StankinQuestionnaire.Model.Indicator。

这意味着ProxyCreationEnabled对于第一个数据库上下文为true,而对于第二个数据库属性为false。因此,延迟加载在第二种情况下不起作用。

尝试搜索项目中设置了ProxyCreationEnabled的位置,可能您有多个位置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么Java编译器有时会允许对null取消装箱?

为什么在Java Servlet中的会话中设置属性有时会失败?

request.getRemoteUser()有时会返回null

为什么这段代码有时会抛出NullPointerException?

为什么片段中的getContext()有时会返回null?

为什么返回std :: optional有时会移动,有时会复制?

BigQuery:为什么表范围装饰器有时会返回错误的结果?

为什么Relation.size有时会在Rails 4中返回哈希

为什么Vim有时会创建.swp文件?

为什么JavaScript getDate()有时会返回上一个日期?

为什么有时会以自然顺序打印HashMap

为什么querySelectorAll有时会返回实时DOM元素?

为什么✓符号有时会被替换为“ –”?

为什么Activity getIntent()。getExtras()有时会返回null?

为什么QDoubleSpinBox的精度有时会高于其decimals属性所允许的精度?

为什么Ruby Procs有时会返回而有时却是错误?

Geolocation.GetLastKnownLocationAsync()有时会返回null

为什么registerForRemoteNotificationTypes有时会失败?

为什么读取属性有时会在javascript中引发错误?

为什么Clang有时会返回nullptr,有时会返回我想要的东西?

为什么grep有时会返回带有两个斜杠的目录?

为什么fork有时会返回父级,有时会返回子级?

为什么在 javascript 中执行导入时,有时会返回未定义的变量?

为什么我有时会得到嵌入的属性有时不会?

为什么 super().__new__ 有时会返回父类的类型?

为什么 R source() 有时会工作有时会出错

为什么 gensim summarise() 有时会返回空白?

为什么有时会忽略 flexbox 中的纵横比 CSS 属性?

为什么主题有时会发出数据?