Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq 转换IQueryable<;T>;到IQueryable<;Y>;_Linq_Entity Framework_Iqueryable - Fatal编程技术网

Linq 转换IQueryable<;T>;到IQueryable<;Y>;

Linq 转换IQueryable<;T>;到IQueryable<;Y>;,linq,entity-framework,iqueryable,Linq,Entity Framework,Iqueryable,我正在尝试这样做:我首先使用EF代码映射一个旧的现有数据库。有许多字段的类型不正确(例如:char(1)用作布尔值),因此我为我的db上下文创建了一个包装类,它可以完美地映射到数据库表。现在,我想在我的存储库中公开我的实体类型的IQueryable。参见我的示例: public class MyContext:DbContext { public DbSet<WrappedEntity> WrapperEntities; } public class Repository

我正在尝试这样做:我首先使用EF代码映射一个旧的现有数据库。有许多字段的类型不正确(例如:char(1)用作布尔值),因此我为我的db上下文创建了一个包装类,它可以完美地映射到数据库表。现在,我想在我的存储库中公开我的实体类型的IQueryable。参见我的示例:

public class MyContext:DbContext
{
    public DbSet<WrappedEntity> WrapperEntities;
}

public class Repository
{
    private MyContext _context;

    //contructors omitted

    public IQueryable<Entity> GetEntities()
    {
        return _context.WrapperEntities; //doesn't compile, I need some convertion here
    }
}
公共类MyContext:DbContext
{
公共DbSet包装器实体;
}
公共类存储库
{
私有MyContext_上下文;
//省略了构造函数
公共IQueryable GetEntities()
{
return _context.WrapperEntities;//未编译,这里需要一些转换
}
}
我已经有了我的转换例程,唯一缺少的是在不公开WrappedEntity类的情况下查询我的DbContext和我的存储库的方法,这可能吗?如何实现


谢谢。

通常您使用
可查询项目。选择
可更改查询类型

public IQueryable<Entity> GetEntities()
{
  return _context.WrapperEntities.Select(x => new Entity(){...});
} 
publicIQueryable GetEntities()
{
返回_context.WrapperEntities.Select(x=>newentity(){…});
} 

我很困惑,您创建WrappedEntity类型是为了纠正数据库中一些不幸的原理图决策,但是您不想公开它吗?我读对了吗?没错。我想对存储库的使用者“隐藏”我数据库的真实结构。最接近我需要的,但我意识到我想要的并不是解决问题的最佳方法。谢谢你的帮助。