我正在使用.net Web Api,Entity Framework和PostgreSql编写应用程序,我在调用存储过程时遇到问题。我试图解决这个问题:using stored procedure in entity framework但它似乎没有帮助,所以我会询问我的具体案例并希望我能得到帮助。
我在postgres中编写了一个存储过程,我想要做的就是从我的存储库中调用它。这样做的最佳方法是什么?如果我想通过DbContext
对象调用它,我需要在调用它之前告诉DbContext
存储过程是否存在吗?使用ado.Net直接使用sql会更好吗?这是我尝试过的,它给我一个语法错误:
var serverName = new PgSqlParameter("server_name", server);
var dt = new PgSqlParameter("data_tag", dataTag);
var timestamp = new PgSqlParameter("ts", DateTime.Now);
var val = new PgSqlParameter("val", value);
if (context.Database.Connection.State == ConnectionState.Closed)
context.Database.Connection.Open();
try
{
context.Database.ExecuteSqlCommand(@"EXEC [dbo].[historical_tag_values_insert]", serverName, dt, timestamp, val);
}
finally
{
if (context.Database.Connection.State == ConnectionState.Open)
context.Database.Connection.Close();
}