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
C# 在实体框架中将表值函数作为IQueryable执行_C#_Entity Framework - Fatal编程技术网

C# 在实体框架中将表值函数作为IQueryable执行

C# 在实体框架中将表值函数作为IQueryable执行,c#,entity-framework,C#,Entity Framework,我是实体框架的新手,我使用Linq to SQL,它工作得很好,但是当我想要创建WCF数据服务时,我从该服务收到很多错误,所以我决定转到EF 但我的问题是TVF(表值函数),在我的数据库中,我有很多TVF返回每个登录用户的数据以及指定对象的用户权限,例如,我有一个表记录和一个TVFuf\u SelectUserRecords(@UID BIGINT)。我希望执行此函数并返回其结果以代替记录表 在Linq to SQL中,它工作得很好,但在EF中,我无法使它运行,问题是当我将TVF添加到模型中时(

我是实体框架的新手,我使用Linq to SQL,它工作得很好,但是当我想要创建WCF数据服务时,我从该服务收到很多错误,所以我决定转到EF

但我的问题是TVF(表值函数),在我的数据库中,我有很多TVF返回每个登录用户的数据以及指定对象的用户权限,例如,我有一个表
记录
和一个TVF
uf\u SelectUserRecords(@UID BIGINT)
。我希望执行此函数并返回其结果以代替
记录

在Linq to SQL中,它工作得很好,但在EF中,我无法使它运行,问题是当我将TVF添加到模型中时(通过一些技巧,因为EF designer不支持它),TVF的结果不是
IQueryable
,而是
IEnumerable
,因此我无法在WCF数据服务中返回它


有什么方法可以将函数作为表执行吗?

您可以使用
AsQueryable()
将结果转换为
IQueryable

IEnumerable result={call TVF};
IQueryable query=result.AsQueryable();
返回查询;

我看到EF 5支持TVF,但在我的项目中,我看不到对它的支持。为什么?我使用的是.NET 4,EF 5的新功能仅适用于.NET 4.5

,它会对数据库或内存中的对象执行查询吗?是否将整个可枚举项从数据库加载到内存中,然后在其上运行查询?这取决于基础类型。如果它已经实现了
IQueryable
,那么它应该。我从来没有试过,所以我不能肯定。你用的是什么版本的EF?似乎存在于EF 5中。我正在VS2012中使用EF5
IEnumerable<Record> result = {call TVF};
IQueryable<Record> query = result.AsQueryable();
return query;