【问题标题】:Entity Framework - Get count of foreign-key relation实体框架 - 获取外键关系的计数
【发布时间】:2012-07-25 00:48:53
【问题描述】:

我有一个简单的类别管理系统。

在我自动生成的 EF 实体中,我有两类相关性:

class Category {
    public EntityCollection<Member> Members { get; }
}
class Member {
    public Category ParentCategory { get; }
}

我有一个业务规则,如果它有任何成员,它会阻止删除一个类别。我希望通过这样做来实现:

if( category.Members.Count() > 0 ) // then disallow deletion

但是这个调用总是返回零。

看来我需要先实际加载集合,这会导致数据库命中:

if( !category.Members.IsLoaded ) category.Members.Load();
if( category.Members.Count() > 0 ) // then disallow deletion. This works.

我希望 EF 足够聪明,可以将初始的 .Count() 调用转换为 SQL SELECT COUNT(*) FROM Members WHERE Members.CategoryId = @parentCategoryId,而不是实际加载 Members 实体并在内存中遍历它们。

有没有办法在 EF 中做到这一点,还是我需要定义一个存储过程或自定义 SQL 来实现这一点?

【问题讨论】:

    标签: asp.net-mvc dry


    【解决方案1】:

    试试

    if ( category.Members.CreateSourceQuery().Count() > 0 )
    

    【讨论】:

      猜你喜欢
      • 2017-07-20
      • 1970-01-01
      • 2020-07-08
      • 1970-01-01
      • 2018-09-09
      • 2018-07-04
      • 1970-01-01
      • 2022-01-04
      • 2018-10-25
      相关资源
      最近更新 更多