2015-12-09 37 views
2

我想在实体框架返回使用新FromSql命令值,如果一切顺利的话1,如果发生错误7.我的存储过程返回值为0。实体框架7 FromSql存储过程返回值

使用FromSqlDbSet例如,我们可以做

_dbContext.ExampleEntity.FromSql('someSproc', 'param') 

你将如何得到从这个0或1标返回值?

回答

3

貌似存储过程的支持是still on the backlog

这里有一个例子扩展方法可以调用使用_dbContext.ExecuteStoredProcedure("someSproc", "param");

public static class DbContextExtension 
{ 
    public static int ExecuteStoredProcedure(this DbContext context, string name, string parameter) 
    { 
     var command = context.Database.GetDbConnection().CreateCommand(); 
     command.CommandType = CommandType.StoredProcedure; 
     command.CommandText = name; 
     var param = command.CreateParameter(); 
     param.ParameterName = "@p0"; 
     param.Value = parameter; 
     command.Parameters.Add(param); 
     return (int)command.ExecuteScalar(); 
    } 
} 
+0

嗨斯塔福德,看起来当场对我的需要。问题,为了能够调用上面的扩展方法,您如何首先获取/实例化上下文? – mattpm

+1

@mattpm取决于您的应用程序的设置。从这里开始; https://docs.microsoft.com/en-us/ef/core/miscellaneous/configuring-dbcontext –

+0

这并没有为我工作 - 我得到“的ExecuteScalar需要一个开放和可用连接的连接的当前状态为关闭。”为了使其正常工作,我必须明确地打开连接,如下所示 - https://stackoverflow.com/a/39543702/432085。我通过ASP.Net Core API中的Startup.cs注入我的DbContext,并且我没有其他DbContext操作的问题。很想知道你是如何得到这个工作的。 – DanO