相关疑难解决方法(0)

过滤包含在EF Core中

我正在尝试过滤初始查询.我已经嵌套了包含模型的叶子.我正在尝试根据其中一个包含的属性进行过滤.例如:

using (var context = new BloggingContext())
{
    var blogs = context.Blogs
        .Include(blog => blog.Posts)
            .ThenInclude(post => post.Author)
        .ToList();
}
Run Code Online (Sandbox Code Playgroud)

我怎么能说呢.Where(w => w.post.Author == "me")?

entity-framework-core

29
推荐指数
5
解决办法
2万
查看次数

使用包含EF 4.1 Code-First的Include和/或Select方法时的订单导航属性?

这是这里解释的问题的第二步:EF 4.1代码优先:如何加载相关数据(父子孙子)?.在@Slauma的指导下,我使用这种方法成功检索了数据:

var model = DbContext.SitePages
    .Where(p => p.ParentId == null && p.Level == 1)
    .OrderBy(p => p.Order) // ordering parent 
    .ToList();

foreach (var child in model) { // loading children
    DbContext.Entry(child)
        .Collection(t => t.Children)
        .Query()
        .OrderBy(t => t.Order) // ordering children
        .Load();

    foreach (var grand in child.Children) { // loading grandchildren
        DbContext.Entry(grand)
            .Collection(t => t.Children)
            .Query()
            .OrderBy(t => t.Order) // ordering grandchildren 
            .Load();
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然这种方法有效,但它会向数据库发送许多查询,而我正在寻找一种方法,只需一个查询即可完成所有操作.在@Slauma的指导下(在上面链接的答案中解释),我已经将查询更改为:

var model2 = DbContext.SitePages
    .Where(p => p.ParentId …
Run Code Online (Sandbox Code Playgroud)

entity-framework parent-child ef-code-first entity-framework-4.1

8
推荐指数
1
解决办法
8763
查看次数

使用 EF Core 包含子项中的 OrderBy

在我的 .NET Core / EF Core 应用程序中,我有一个带有嵌套子对象列表的模型。当我检索一个实例时,我需要按子项的属性之一对嵌套列表进行排序。通过查看 EF Core 上的类似问题和报告的问题,我了解到我无法在检索实例时对嵌套列表进行排序。所以现在我试图在加载到内存中后对其进行排序。但在这里我也没有成功。

我正在使用存储库模式来访问 DbContext。

对此列表进行排序的正确方法是什么,以便它始终从我的存储库中正确返回排序?

我试过的最新:

    public async Task<Parent> GetParent(int id)
    {
        var loadedInMemory = context.Parents
            .Include(p => p.Children)
            .SingleOrDefaultAsync(p => p.Id == id);

        var result = loadedInMemory.Result.Children.OrderBy(c => c.Sequence);
        // When I order within the Task<Parent>, result becomes IOrderedEnumerable 
        // and I can't return it.

        return await result;
    }
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-core

7
推荐指数
2
解决办法
6172
查看次数

为MVC视图订购实体框架项和子项

如何从DbSet中对查询进行排序,并包括应该排序的子项.

例:

我有一个调度订单的模型.

public class Order
{
  public virtual int Id { get; set; }
  public virtual int? SchedulingOrder { get; set; }
  public virtual int? WeekId { get; set; }
  public virtual Week Week { get; set; }
}
public class Week
{
  public virtual int Id { get; set; }
  public virtual DateTime StartDate { get; set; }
  public virtual ICollection<Order> Orders { get; set; }
}
...
public DbSet<Week> Weeks { get; set; }
public DbSet<Order> Orders …
Run Code Online (Sandbox Code Playgroud)

linq asp.net asp.net-mvc entity-framework sql-order-by

5
推荐指数
1
解决办法
7606
查看次数

LINQ To Entities中的实体框架,MVC 3,OrderBy

我有以下查询:

model.Page = db.Pages
    .Where(p => p.PageId == Id)
    .Include(p => p.Series
                   .Select(c => c.Comics
                                 .Select(col => col.Collection)))
    .SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)

虽然我现在需要通过名为"ReadingOrder"的属性来订购漫画,但这很有效.

我试过了:

model.Page = db.Pages
    .Where(p => p.PageId == Id)
    .Include(p => p.Series.Select(c => c.Comics.OrderBy(o => o.ReadingOrder)
                          .Select(col => col.Collection)))
    .SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)

但是这会导致以下错误:

Include路径表达式必须引用在类型上定义的导航属性.使用虚线路径作为参考导航属性,使用Select运算符作为集合导航属性.参数名称:路径

任何想法这个错误意味着什么?

提前致谢

编辑:

我的模特:

public class Page
{
    public int PageId { get; set; }
    public string Title { get; set; }
    public ICollection<Series> Series { get; set; }
}

public class Series
{
    public int SeriesId { …
Run Code Online (Sandbox Code Playgroud)

linq-to-entities entity-framework-4 asp.net-mvc-3

4
推荐指数
1
解决办法
5238
查看次数