EF6不会延迟加载导航属性

海因·安德烈·格伦尼斯达

EF6延迟加载出现问题。我已经搜索了StackOverflow,但是发现的其他问题与我的情况不符。

我使用的virtual关键字是我的课程publicLazyLoadingEnabled并且ProxyCreationEnabled都设置为true

当我打开一个course从数据库对象,presentationId被设置为正确id并且presentationnull这是正确的,因为它没有被加载。

当我将presentation属性传递PresentationsController.ToDto()方法时,应该将其延迟加载,但是null reference在方法内部却出现了异常,因为它仍然是null

我知道,关系工作,因为当我强迫加载presentation的特性courseWatch window同在一个破发点public static CourseDto ToDto(Course item, DnbContext db)就被加载方法。查看图片:

正如你看到的item.presentationnull

在此处输入图片说明

当我手动评估db.courses.Find(257).presentation哪个对象引用了相同的表示形式时item,它们都被加载:

在此处输入图片说明

这是我的POCO:

public abstract class BaseModel : ISoftDelete {
    public int id { get; set; }
}

public class Course : BaseModel {
    [Required]
    public int presentationId { get; set; }
    public virtual Presentation presentation { get; set; }
}

我的Web API控制器方法:

// GET api/Courses/5
public CourseDto GetCourse(int id) {
    var item = db.courses.FirstOrDefault(x => x.id == id);
    return ToDto(item, db);
}

public static CourseDto ToDto(Course item, DnbContext db) {
    var dto = new CourseDto();

    if (item.presentationId > 0) dto.presentation = PresentationsController.ToDto(item.presentation, db);

    return dto;
}

有任何想法吗?

马里奥

如果要通过动态代理使用延迟加载,则实体必须已明确声明了公共构造函数。(如果您还有其他带参数的)

public abstract class BaseModel : ISoftDelete {
    public BaseModel() { }
    public int id { get; set; }
}

public class Course : BaseModel {
    public Course() { }
    [Required]
    public int presentationId { get; set; }
    public virtual Presentation presentation { get; set; }
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

EF6不会延迟加载导航属性

来自分类Dev

检查“延迟加载”属性是否已在EF6中加载

来自分类Dev

EF Core:分离的延迟加载导航属性

来自分类Dev

EF6 延迟加载:添加时加载整个集合?

来自分类Dev

如何在渴望加载的ASP.NET MVC中的EF6中包括导航属性的多个导航属性?

来自分类Dev

EF6:在DbSet.Local中包括导航属性

来自分类Dev

阻止EF6生成导航属性

来自分类Dev

EF6导航属性与单逆相同类型

来自分类Dev

EF6加载相关集合成员的属性

来自分类Dev

EF6渴望加载相关实体的单个属性

来自分类Dev

从SQL到EF6,我应该从哪种加载方法开始?延迟加载,显式加载,急切加载

来自分类Dev

从SQL到EF6,我应该从哪种加载方法开始?延迟加载,显式加载,急切加载

来自分类Dev

EF6代码首次延迟加载导致空集合

来自分类Dev

EF6代码首次延迟加载导致空集合

来自分类Dev

将引用属性的引用属性加载到包含EF6中

来自分类Dev

可以使用EF6将包含的导航属性嵌套在Web API中吗?

来自分类Dev

具有导航属性的EF6一对多流利的api

来自分类Dev

具有导航属性的EF6一对多流利的api

来自分类Dev

为什么在EF6中调用dbContext.Save后重置导航属性

来自分类Dev

EF导航属性未加载

来自分类Dev

EF导航属性未加载

来自分类Dev

延迟加载不会加载ICollection属性

来自分类Dev

EF6渴望在POCO内加载

来自分类Dev

在 EF6 中加载相关实体

来自分类Dev

更新EF6时需要属性

来自分类Dev

忽略继承属性 EF6

来自分类Dev

如何使用EF6 Code First将外键属性公开给具有导航属性的现有实体

来自分类Dev

如何为一个模型创建两个导航属性(EF6代码优先)

来自分类Dev

ef核心导航属性无法加载

Related 相关文章

热门标签

归档