实体框架和Postgresql:存储过程

时间:2017-03-07 11:45:57

标签: c# postgresql entity-framework stored-procedures

我在postgresql中使用Entity Framework。一个常见的情况是我想选择一个函数结果作为查询的一部分,比如

SELECT t.id, func1(t.id) FROM table1 t WHERE...

问题是,我无法从postgresql将存储过程导入实体框架。 (尝试导入时,我得到了一个不受支持的异常。)作为一种解决方法,我有表单的视图

id, func1(id)

但是,在连接中使用时似乎非常慢。慢查询的一个示例:

SELECT t.id, f.func_result
FROM table1 t
JOIN func_view f on f.id = t.id
WHERE t.id IN (...)

版本速度提高约1000倍,即使使用相关子查询:

SELECT t.id,(
    SELECT f.func_result
    FROM func_view f
    WHERE f.id = t.id
) FROM table1 t
WHERE t.id IN (...)

但是,当我在实体框架中编写此查询时,它似乎使用第一个版本。有没有办法强制EF使用子查询?或者还有另一种更有效的解决方法吗?

0 个答案:

没有答案