实体框架首先使用代码进行条件映射?

Roc*_*igh 0 c# entity-framework c#-4.0 entity-framework-4.1

我有一个实体,我只需要返回给定字段值大于零的记录.我在edmx中看到过条件映射的例子,这看起来像我需要的东西.但是,我的项目首先是EF 4.1代码.有没有办法使用代码第一种方法来做到这一点?

Pol*_*ity 5

我不认为有一个内置的方法来实现这一点,你可以在你的DbContext中公开你应用过滤的属性,最初这将是readonly但我没有看到你不能创建自己的DbSet实现反映的原因回到另一个DbSet(ProxyDbSet)

只读示例:

class MyDbContext : DbContext
{
    public IDbSet<User> Users { get; set; }

    public IQueryable<User> Admins 
    {
        get 
        {
            return from user in users
                   where user.Role == "admin"
                   select user;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @RockyMountainHigh - 不,它实际上,请注意DbSet实现IQueryable以及返回IQueryable的方法本身.这意味着调用管理员不会返回除查询定义之外的任何内容.一旦你开始对管理员的结果做一个foreach,就会生成一个SQL查询,包括用户角色的过滤器.因此,这与条件映射一样有效 (2认同)