我是Entity Framework的新手,我使用的是Linq-to-SQL,它工作得很好,但是当我想创建一个WCF数据服务时,我从服务中收到很多错误,所以我决定搬家到EF。
但我的问题是TVF(表值函数),在我的数据库中我有很多TVF为每个登录用户返回数据加上指定对象的用户权限,例如我有一个表Records
和TVF uf_SelectUserRecords(@UID BIGINT)
。我想执行此函数并返回其结果来代替Records
table。
在Linq-to-SQL中它运行良好但在EF中我无法使其运行,问题是当我将TVF添加到模型时(通过一些技巧,因为EF设计师不支持它)的结果TVF不是IQueryable
而是IEnumerable
,所以我无法在WCF数据服务中返回它。
有什么方法可以将函数作为表执行?
答案 0 :(得分:1)
您可以使用IQueryable
AsQueryable()
IEnumerable<Record> result = {call TVF};
IQueryable<Record> query = result.AsQueryable();
return query;
答案 1 :(得分:1)
每当我看到EF 5支持TVF,但在我的项目中,我看不到它的支持。为什么?我使用的是.NET 4,而EF 5的新功能仅适用于.NET 4.5