Я просто хочу вставить запись в базу данных, и она не работает. Какие изменения я должен внести?
An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll but was not handled in user code Additional information: Procedure or function spInsertFunction has too many arguments specified.
Что я уже пробовал:
Способ действия контроллера
public ActionResult Create(FunctionByRole functionByRole) { FunByRoleFunctions obj = new FunByRoleFunctions(); obj.AddFunctionByRole(functionByRole); return RedirectToAction("Index"); }
Процедура Хранения Sql
create procedure [dbo].[spInsertFunction] @RoleID int=0 output, @FunctionID int as begin insert into FunctionByRole values (@RoleID,@FunctionID) set @RoleID=@@IDENTITY end
функция add
public void AddFunctionByRole(FunctionByRole functionByRole) { string connectionString = ConfigurationManager.ConnectionStrings["ChequeVerificationContext"].ConnectionString; List<FunctionByRole> functionByRoles = new List<FunctionByRole>(); using (SqlConnection con = new SqlConnection(connectionString)) { SqlCommand cmd = new SqlCommand("[spInsertFunction]", con); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@FunByRoleID", SqlDbType.Int).Value = functionByRole.FunByRoleID; cmd.Parameters["@FunByRoleID"].Direction = ParameterDirection.Output; cmd.Parameters.Add("@FunctionID", SqlDbType.Int).Value = functionByRole.FunctionID; cmd.Parameters["@FunctionID"].Direction = ParameterDirection.Input; cmd.Parameters.Add("@RoleID", SqlDbType.Int).Value = functionByRole.RoleID; cmd.Parameters["@RoleID"].Direction = ParameterDirection.Input; con.Open(); cmd.ExecuteNonQuery(); } }
[no name]
Неужели? Прочтите сообщение об ошибке. Посмотрите на свою хранимую процедуру и посмотрите на свою функцию. Видите ли вы вообще какую-либо корреляцию между сообщением об ошибке, вашей хранимой процедурой, которая принимает 2 параметра, и функцией, в которой вы вызываете хранимую процедуру с 3 параметрами?