如何从Entity Framework调用现有存储过程

时间:2014-08-07 15:46:00

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

我正在使用.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();
        }

0 个答案:

没有答案