首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SqlParameter对ObjectParameter

SqlParameter对ObjectParameter
EN

Stack Overflow用户
提问于 2015-10-17 17:30:40
回答 2查看 2.4K关注 0票数 2

SqlParameterObjectParameter的主要区别是什么?

代码语言:javascript
复制
ObjectParameter[] parameters =
{
           new ObjectParameter("MainUserName", user.MainUserName),
           new ObjectParameter("MainUserFirstName",user.MainUserFirstName),
           new ObjectParameter("MainUserLastName",user.MainUserLastName),
           new ObjectParameter("DOJoin", DateTime.Now),
};

SqlParameter[] parameters =
       {
           new SqlParameter("@MainUserName", user.MainUserName),

           new SqlParameter("@MainUserFirstName",user.MainUserFirstName),

           new SqlParameter("@MainUserLastName",user.MainUserLastName),



            new SqlParameter("@DOJoin", DateTime.Now),

       };

我的工作首先是MVC代码,我想通过存储过程与我的数据库进行通信。那么,向SP传递参数的最佳方法是哪一种?上一次我试图通过传递Sql参数来执行SP,但是遇到了下面的异常

代码语言:javascript
复制
Procedure or function 'InsertUser' expects parameter '@MainUserName', which was not supplied

我试图通过尝试不同的场景来解决这个问题,但是没有运气。最后,我认为我应该使用对象参数,Sql参数的整数。但我不知道这两者之间的主要区别是什么?

Edite我想使用期望object[] parametersExecuteSqlCommandAsync运行下面的代码

代码语言:javascript
复制
 public async Task InsertAsync(ActionCriteria obj)
{
    await _dbCOntext.Database.ExecuteSqlCommandAsync(obj.SpName, obj.SqlParameter) ;
}
代码语言:javascript
复制
public Task<int> ExecuteSqlCommandAsync(string sql, params object[] parameters);

那么我将如何将sqlperameter传递给ExecuteSqlCommandAsync,以便它可以使用提供的ExecuteSqlCommandAsync而不是ObjectParameters来执行SP

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-17 19:39:08

SqlParameter是ADO.NET的一部分,如果底层数据库是Server,它可以在EF中使用。例如在context.Database.SqlQuery方法中。

ObjectParameter是EF (查看它的程序集名称)的一部分,EF可以与许多DBMS一起使用(当然,每种情况都有特殊的提供程序)。ObjectParameter不需要Server。SqlParameter有。

这两个类都用于执行SPs和原始SQL查询。我建议在Server数据库的情况下,这些类之间没有概念上的区别。

票数 5
EN

Stack Overflow用户

发布于 2018-08-16 07:03:10

好吧,您几乎是对的,但是sqlParameter是SQL注入安全的,而objectParameter允许注入您想要的任何字符串,这有很大的不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33189517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档