我已经研究了自己的问题,但不知何故。
我以1:n的方式有4个带有链接实体的类:
public class ContentProtectionProject
{
[Required]
public int Id { get; set; }
...
[Required]
public List<UrlToProtect> UrlsToProtect { get; set; }
[Required]
public int AccountId { get; set; }
[ForeignKey("AccountId")]
public Account Account { get; set; }
}
public class UrlToProtect
{
[Required]
public int Id { get; set; }
...
[Required]
public List<UrlTextContent> UrlsTextContent { get; set; }
[Required]
public int ContentProtectionProjectId { get; set; }
[ForeignKey("ContentProtectionProjectId")]
public ContentProtectionProject ContentProtectionProject { get; set; }
}
public class UrlTextContent
{
[Required]
public int Id { get; set; }
...
[Required]
public List<UrlTextSnippet> UrlTextSnippets { get; set; }
[Required]
public int UrlToProtectId { get; set; }
[ForeignKey("UrlToProtectId")]
public UrlToProtect UrlToProtect { get; set; }
}
public class UrlTextSnippet
{
[Required]
public int Id { get; set; }
...
[Required]
public int UrlTextContentId { get; set; }
[ForeignKey("UrlTextContentId")]
public UrlTextContent UrlTextContent { get; set; }
}
我想获取一个项目的所有数据,我试图通过projectId从存储库中获取这种数据:
public async Task<ContentProtectionProject> GetContentProtectionProject(int contentprotectionProjectId)
{
var contentProtectionProject = await _context.ContentProtectionProjects
.Include(x => x.UrlsToProtect)
.ThenInclude(u => u.UrlsTextContent)
.FirstOrDefaultAsync(x => x.Id == contentprotectionProjectId);
return contentProtectionProject;
}
我只能进入“ UrlTextContent”级别,但不知何故不能包含“ UrlTextSnippet”。
我的目标是加载一个完整的“项目”,以便能够对链接的实体列表项进行一些处理。
最后,我想找到所有“ UrlTextContent”,这些“ UrlTextContent”在链接的实体上无法通过迭代获得“ UrlTextSnippets”。
我将.NET Core 2.1.403与Entity Framework Core .NET 2.1.4-rtm-31024一起使用
非常感谢您的帮助。
最诚挚的问候
编辑:
上下文类:
public class DataContext : DbContext
{
public DataContext(DbContextOptions<DataContext> options) : base (options) {}
...
public DbSet<ContentProtectionProject> ContentProtectionProjects { get; set; }
public DbSet<UrlToProtect> UrlToProtects { get; set; }
public DbSet<UrlTextContent> UrlTextContents { get; set; }
public DbSet<UrlTextSnippet> UrlTextSnippets { get; set; }
}
编辑2:调试屏幕截图
“ UrlTextSnippet”列表为空,尽管有一个条目可用。
答案 0 :(得分:1)
我讨厌那些说你可以做一些你做不到的事情的人,所以请提前对不起。根据{{3}},您应该可以链接那些Documentation或.ThenInclude()。希望这些能让您走上正确的道路。
using (var context = new BloggingContext())
{
var blogs = context.Blogs
.Include(blog => blog.Posts)
.ThenInclude(post => post.Author)
.ThenInclude(author => author.Photo)
.Include(blog => blog.Owner)
.ThenInclude(owner => owner.Photo)
.ToList();
}
也有.Include(),但我会尽量避免选择。
此外,您可能会遇到此问题,并且也许可以这样做,但是IntelliSense可能会使您误入歧途。
注意:当前版本的Visual Studio提供不正确的代码完成 选项,并可能导致使用语法标记正确的表达式 集合导航后使用ThenInclude方法时出现错误 属性。这是在跟踪的IntelliSense错误的症状 this。可以忽略 这些伪造的语法错误,只要代码正确且可以 编译成功。
答案 1 :(得分:0)
坚持我的“莫名其妙”。昨天,我沮丧地关闭了Visual Studio,今天,我想再次对其进行测试,这里的现有代码就可以了,而无需进行任何更改。
也许我的Visual Studio代码昨天打ic了。
但是无论如何,谢谢您的帮助。