asp.net mvc - stored - SqlParameter vs ObjectParameter
mvc entity framework stored procedure (1)
¿Cuál es la principal diferencia entre SqlParameter
y 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),
};
Estoy trabajando primero en el código MVC. Deseo establecer una comunicación con mi base de datos a través de los procedimientos almacenados. Entonces, ¿cuál es el mejor enfoque para pasar parámetros a SP? La última vez que traté de ejecutar SP al pasar Sql Perameters pero me enfrenté a la siguiente excepción
Procedure or function ''InsertUser'' expects parameter ''@MainUserName'', which was not supplied
Traté de resolverlo probando diferentes escenarios pero no tuve suerte. Por fin pensé que debería usar Object Perameters de Sql Perameters. Pero no sé cuál es la diferencia principal entre estos?
Edite Quiero ejecutar mi código a continuación usando ExecuteSqlCommandAsync
que espera los 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);
Entonces, ¿cómo voy a pasar sqlperameters a ExecuteSqlCommandAsync
, para que pueda ejecutar SP con los parámetros SqlParameters proporcionados, no ObjectParameters
SqlParameter es una parte de ADO.NET, se puede usar en EF si la base de datos subyacente es SQL Server. Por ejemplo, en el método context.Database.SqlQuery
.
ObjectParameter es una parte de EF (vea su nombre de ensamblado) y EF puede usarse junto con muchos DBMS (con un proveedor especial para cada caso, por supuesto). ObjectParameter
no requiere SQL Server. SqlParameter
hace.
Ambas clases se utilizan para ejecutar SP y consultas SQL sin formato. Sugiero que no existe una diferencia conceptual entre estas clases en el caso de la base de datos de SQL Server.