with stored mvc framework first executesqlcommand data code asp.net-mvc stored-procedures entity-framework-6 code-first

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.