SqlParameter 与 ObjectParameter
SqlParameter vs ObjectParameter
SqlParameter
和 ObjectParameter
之间的主要区别是什么?
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 Code First,我想通过存储过程与我的数据库进行通信。
那么将参数传递给 SP 的最佳方法是哪一种?
上次我尝试通过传递 Sql 参数来执行 SP 但遇到以下异常
Procedure or function 'InsertUser' expects parameter '@MainUserName', which was not supplied
我试图通过尝试不同的场景来解决它,但没有成功。
最后我想我应该使用对象参数而不是 Sql 参数。
但不知道这些之间的主要区别是什么?
编辑
我想 运行 我下面的代码使用 ExecuteSqlCommandAsync
期望 object[] parameters
public async Task InsertAsync(ActionCriteria obj)
{
await _dbCOntext.Database.ExecuteSqlCommandAsync(obj.SpName, obj.SqlParameter) ;
}
public Task<int> ExecuteSqlCommandAsync(string sql, params object[] parameters);
那么我如何将 sqlperameters 传递给 ExecuteSqlCommandAsync
,以便它可以使用提供的 SqlParameters 而不是 ObjectParameters
执行 SP
SqlParameter 是 ADO.NET 的一部分,如果底层数据库是 SQL 服务器,它 可能会 在 EF 中使用。例如在 context.Database.SqlQuery
方法中。
ObjectParameter 是 EF 的一部分(查看它的程序集名称)并且 EF 可以与许多 DBMS 一起使用(当然,每种情况都有特殊的提供程序)。 ObjectParameter
不需要 SQL 服务器。 SqlParameter
确实如此。
类 都用于执行 SP 和原始 SQL 查询。我建议在 SQL 服务器数据库的情况下,这些 类 之间没有概念上的区别。
嗯,
你几乎是对的,但是有很大的不同,sqlParameter 是 SQL 注入安全的 而 objectParameter 允许你注入你想要的任何字符串。
SqlParameter
和 ObjectParameter
之间的主要区别是什么?
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 Code First,我想通过存储过程与我的数据库进行通信。 那么将参数传递给 SP 的最佳方法是哪一种? 上次我尝试通过传递 Sql 参数来执行 SP 但遇到以下异常
Procedure or function 'InsertUser' expects parameter '@MainUserName', which was not supplied
我试图通过尝试不同的场景来解决它,但没有成功。 最后我想我应该使用对象参数而不是 Sql 参数。 但不知道这些之间的主要区别是什么?
编辑
我想 运行 我下面的代码使用 ExecuteSqlCommandAsync
期望 object[] parameters
public async Task InsertAsync(ActionCriteria obj)
{
await _dbCOntext.Database.ExecuteSqlCommandAsync(obj.SpName, obj.SqlParameter) ;
}
public Task<int> ExecuteSqlCommandAsync(string sql, params object[] parameters);
那么我如何将 sqlperameters 传递给 ExecuteSqlCommandAsync
,以便它可以使用提供的 SqlParameters 而不是 ObjectParameters
SqlParameter 是 ADO.NET 的一部分,如果底层数据库是 SQL 服务器,它 可能会 在 EF 中使用。例如在 context.Database.SqlQuery
方法中。
ObjectParameter 是 EF 的一部分(查看它的程序集名称)并且 EF 可以与许多 DBMS 一起使用(当然,每种情况都有特殊的提供程序)。 ObjectParameter
不需要 SQL 服务器。 SqlParameter
确实如此。
类 都用于执行 SP 和原始 SQL 查询。我建议在 SQL 服务器数据库的情况下,这些 类 之间没有概念上的区别。
嗯, 你几乎是对的,但是有很大的不同,sqlParameter 是 SQL 注入安全的 而 objectParameter 允许你注入你想要的任何字符串。