1

我是 Entity Framework 的新手,我使用的是 Linq-to-SQL,它运行良好,但是当我想创建 WCF 数据服务时,我从服务中收到很多错误,所以我决定转向 EF。

但我的问题是 TVF(表值函数),在我的数据库中,我有很多 TVF 返回每个登录用户的数据以及指定对象的用户权限,例如我有一个表Records和一个 TVF uf_SelectUserRecords(@UID BIGINT)。我想执行这个函数并返回它的结果来代替Records表。

在 Linq-to-SQL 中它运行良好,但在 EF 中我无法让它运行,问题是当我将 TVF 添加到模型时(通过一些技巧,因为 EF 设计器不支持它)TVF 的结果不是IQueryable但是IEnumerable,所以我不能在 WCF 数据服务中返回它。

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

4

2 回答 2

1

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

IEnumerable<Record> result = {call TVF};
IQueryable<Record> query = result.AsQueryable();
return query;
于 2013-08-11T00:42:52.497 回答
1

我在任何地方看到 EF 5 都支持 TVF,但在我的项目中,我没有看到对它的支持。为什么?我使用的是 .NET 4,而 EF 5 的新功能仅适用于 .NET 4.5

于 2013-08-11T07:52:37.460 回答