這是一個錯誤?如何從Entity Framework 6(數據庫優先)和Npgsql執行存儲過程?
我的組成部分是:
- .NET 4.6.1
- 實體框架6.0
- 3.0.5 Npgsql的
- 的PostgreSQL 9.5
首先,我創建了一個表,存儲過程PostgreSQL 9.5中
CREATE TABLE hello
(
msg text
)
WITH (
OIDS=FALSE
);
ALTER TABLE hello
OWNER TO postgres;
CREATE OR REPLACE FUNCTION sayhello()
RETURNS SETOF hello AS
$BODY$
select
*
from version()
$BODY$
LANGUAGE sql VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION sayhello()
OWNER TO postgres;
二,我去.edmx
文件(實體框架6.0),選擇「從數據庫更新」,選擇新表「hello」和新存儲過程「sayhello」。
模型瀏覽器現在顯示新的表格實體和導入的函數。
三,添加一個新的程序的WCF文件:
public string SayHello()
{
using (var ctx = new chaosEntities())
{
var x = ctx.sayhello();
return "Hello";
}
}
將WCF服務作爲啓動項目,並開始調試。
WCF測試客戶端出現。從WCF服務執行SayHello()
導致:
public virtual ObjectResult<hello> sayhello()
{
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<hello>("sayhello");
}
當這樣執行,我得到:
類型的異常 'System.Data.Entity.Core.EntityCommandCompilationException' 發生的EntityFramework。 dll但未在用戶代碼中處理
附加信息:準備命令 定義時發生錯誤。詳情請參閱內部例外。
內部異常是:{「值沒有在預期範圍之內。」}
正如我有幾百存儲過程,就如何解決這一問題的最欣賞的任何幫助。
TIA
注:我懷疑問題是NpgsqlServices.TranslateCommandTree,但我只是猜測。