代码之家  ›  专栏  ›  技术社区  ›  Oleg Volkov

SqlParameterCollection仅接受非null的SqlParameter类型对象,而不接受SqlParameter对象

  •  0
  • Oleg Volkov  · 技术社区  · 5 年前

    我试过下面的

    var p = new SqlParameter("Option", "AUTHENTICATE");
    var user = _context.Set<User>().FromSqlRaw("EXECUTE dbo.spGeneral_Authenticate @Option", p).ToList();
    var user = _context.Set<User>().FromSqlRaw("EXECUTE dbo.spGeneral_Authenticate @Option=@Option", p).ToList();
    

    SqlParameter[] ps = new SqlParameter[1];
    ps[0] = new SqlParameter("Option", "AUTHENTICATE");
    var user = _context.Set<User>().FromSqlRaw("EXECUTE dbo.spGeneral_Authenticate @Option", ps).ToList();
    var user = _context.Set<User>().FromSqlRaw("EXECUTE dbo.spGeneral_Authenticate @Option=@Option", ps).ToList();
    

    错误:

    InvalidCastException:SqlParameterCollection仅接受非null SqlParameter类型对象,而不是SqlParameter对象。

    0 回复  |  直到 5 年前
        1
  •  13
  •   Palanikumar    5 年前

    InvalidCastException:SqlParameterCollection仅接受非null SqlParameter类型对象,而不是SqlParameter对象。

    对于上述错误,SqlParameter应为 Microsoft.Data.SqlClient.SqlParameter System.Data.SqlClient.SqlParameter

        2
  •  0
  •   Papun Sahoo    4 年前

    在里面Net core 3.0或以上版本,请使用以下代码: 而不是系统。数据SqlClient。SqlParameter使用Microsoft。数据SqlClient。SqlParameter

     int AuthourId = 3;
     Microsoft.Data.SqlClient.SqlParameter authorId = new Microsoft.Data.SqlClient.SqlParameter("@AuthorId", AuthourId);
     IEnumerable<Book> booksByAuthor = shopDbContext.Books
                                                    .FromSqlRaw("Select * from Book where AuthorId=@AuthorId", authorId)
                                                    .ToList();