【发布时间】: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);
}
}
我在其中添加了ItemSubmissions 和Items。
【问题讨论】:
-
不支持延迟加载。相关数据的加载方法请参考docs.microsoft.com/en-us/ef/core/querying/related-data。
标签: c# asp.net-core entity-framework-core