执行非查询程序不工作的asp.net核心

时间:2016-11-04 17:02:23

标签: linq stored-procedures asp.net-core asp.net-core-mvc entity-framework-core

我想执行一个存储过程,它返回三个值(Email,Name,CompanyID)并获取一个参数(CompanyID),但它不起作用。

我创建了一个具有这些属性的类和一个返回数据的存储过程。它显示DatabaseFacade错误。

我的代码是:

 List<MyClass> AppUser = new List<MyClass>(); //Class with three properties
 SqlParameter param1 = new SqlParameter("@CompanyID", CompanyID);
 AppUser = _context.Database.SqlQuery<CC>("GetUserAndRolesForCompany", param1).ToList(); 

显示此错误:我已包含System.Linq

  

'DatabaseFacade'不包含'SqlQuery'的定义,也没有扩展方法'SqlQuery'接受类型为'DatabaseFacade'的第一个参数(你是否缺少using指令或汇编引用?)

1 个答案:

答案 0 :(得分:1)

从此链接https://docs.microsoft.com/en-us/ef/core/querying/raw-sql寻求帮助

在Core 2.0或EntityFramework 7中,不支持Sql 6的功能,该功能在ef 6的早期版本中可用。

下面是在EntityFramework 7中执行sp的示例。

 public List<UserDetails> GetUserDetailsUsingSP(int LoggedInID)
        {
            var loggedInUser = new SqlParameter("Id", LoggedInID);

            return WidServices
                .FromSql("EXECUTE WID_Services_GetAll  @Id ", loggedInUser)
                .FirstOrDefault();
        }

注意:在要在主db上下文类下添加DbSet的位置添加此方法,然后通过实例化dbContext调用此方法。