【问题标题】:Foreign object not being found by Entity Framework Core?Entity Framework Core 没有找到外来对象?
【发布时间】:2017-08-19 14:20:02
【问题描述】:

编辑:通过谷歌搜索我刚刚发现 EF7 不支持延迟加载,那么我将如何实现呢?

我有以下几点:

[Table("MediaSubmission")]
public class MediaSubmission
{
    [Key]
    public int Id { get; set; }

    public string Title { get; set; }

    public virtual MediaItem Item { get; set; }
}

[Table("MediaItem")]
public class MediaItem
{
    public int Id { get; set; }

    [Required]
    [DataType(DataType.Url)]
    public string MediaContents { get; set; }
}

我创建了一个MediaSubmission 和一个MediaItem 以添加到数据库中,如下所示:

var item = new MediaItem() { MediaContents = mediaSubmission.URL };
_context.Add(item);

var submission = new MediaSubmission() { Item = item, Title = mediaSubmission.Title };
_context.Add(submission);

await _context.SaveChangesAsync();

return true;

检查数据库,MediaItem 表中有一个ItemId,它指向mediaSubmission 中的主键ID。

但是,当我遍历 MediaSubmissions 时,我得到了该项目的空引用异常。

我没有覆盖OnModelCreating

有什么想法吗?

编辑:只是添加这是ApplicationbContext

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
    {
    }

    public DbSet<MediaSubmission> ItemSubmissions { get; set; }
    public DbSet<MediaItem> Items { get; set; }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
    }
}

我在其中添加了ItemSubmissionsItems

【问题讨论】:

标签: c# asp.net-core entity-framework-core


【解决方案1】:

当您说“迭代 MediaSubmissions”时,您是如何检索 MediaSubmissions 的?

您可能需要像这样检索这些对象的项目数据:

_context.MediaSubmissions.Include("Item").ToList();

编辑:

要允许延迟加载,请尝试将 this.Configuration.LazyLoadingEnabled = true;在继承 DbContext 的类的构造函数中。

有关延迟加载的信息,请参见此处:http://www.entityframeworktutorial.net/EntityFramework4.3/lazy-loading-with-dbcontext.aspx

【讨论】:

  • 我只是从 dbcontext 中查看它。我认为当我访问它时它会懒惰地创建媒体项目,否则在被请求之前创建所有外键关系会很慢..
猜你喜欢
  • 1970-01-01
  • 2018-03-20
  • 2022-09-22
  • 1970-01-01
  • 2016-11-08
  • 2021-11-06
  • 1970-01-01
  • 2018-09-28
  • 2016-12-16
相关资源
最近更新 更多