3

SqlParameterObjectParameter之間的主要區別是什麼?SqlParameter vs 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代碼首先,我想通過存儲過程與我的數據庫進行通信。 那麼哪一個是將參數傳遞給SP的最佳方法? 我最後一次嘗試通過傳遞的Sql Perameters來執行SP但面對下面的例外

Procedure or function 'InsertUser' expects parameter '@MainUserName', which was not supplied 

我試圖通過嘗試不同的方案來解決,但沒有運氣。 最後我想我應該使用Sql Perameters的Object Perameters intead。 但不知道這些之間的主要區別是什麼?

Edite 我想運行使用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,使之可以與提供執行SP SqlParameters not ObjectParameters

回答

4

SqlParameter是ADO.NET的一部分,它的可能是如果底層數據庫是SQL Server,則用於EF。例如在context.Database.SqlQuery方法中。

ObjectParameter是EF的一部分(看它的程序集名稱),EF可以與許多DBMS一起使用(當然每個案例都有特殊的提供者)。 ObjectParameter不需要SQL Server。 SqlParameter呢。

這兩個類都用於執行SP和原始SQL查詢。我建議在SQL Server數據庫的情況下,這些類之間沒有概念上的區別。