Как вызвать хранимую процедуру в MVC, пожалуйста, проверьте мой код
Создайте таблицу [dbo].[tblDepartment](
[departmentId] [int] IDENTITY(1,1) NOT NULL,
[имя] [nvarchar](50) NULL,
Ограничение [PK_tblDepartment] первичный ключ КЛАСТЕРИЗОВАН
(
[departmentId] ASC
)С (КАК = ВЫКЛ, STATISTICS_NORECOMPUTE = OFF, ТО ЗНАЧЕНИЕ IGNORE_DUP_KEY = OFF, ТО ПАРАМЕТРЫ ALLOW_ROW_LOCKS = ON, ТО ALLOW_PAGE_LOCKS ИНСТРУКЦИИ =) НА [ОСНОВНОЙ]
) НА [ПЕРВИЧНОМ]
ГО
Создайте таблицу [dbo].[tblUser](
[userId] [int] IDENTITY(1,1) NOT NULL,
[имя] [nvarchar](50) NULL,
[адрес] [nvarchar](500) NULL,
[state] [nvarchar](50) NULL,
[зарплата] [bigint] NULL,
[departmentId] [int] NULL,
Ограничение [PK_tblUser] первичный ключ КЛАСТЕРИЗОВАН
(
[имя пользователя] АСК
)С (КАК = ВЫКЛ, STATISTICS_NORECOMPUTE = OFF, ТО ЗНАЧЕНИЕ IGNORE_DUP_KEY = OFF, ТО ПАРАМЕТРЫ ALLOW_ROW_LOCKS = ON, ТО ALLOW_PAGE_LOCKS ИНСТРУКЦИИ =) НА [ОСНОВНОЙ]
) НА [ПЕРВИЧНОМ]
ГО
ALTER TABLE [dbo].[tblUser] с проверкой добавить внешний ключ([departmentId])
Список литературы [dbo].[tblDepartment] ([столбец DepartmentID])
ГО
моя процедура
создайте proc [dbo].[tblDepartment_insertUpdate]
@userId int =0,
@name nvarchar(50) ,
@state nvarchar (50),
@address nvarchar(500),
@поле DepartmentID, инт ,
@result вывод nvarchar(50)
АС
Начать
if (@userId = 0)
начать
вставить в tblUser (имя ,адрес,штат,departmentId)
ценности
(@имя,@адрес@государству,@поле DepartmentID)
if (@@identity >0)
set @result='запись сохранена успешно'
еще
set @result ='запись не сохранена!'
конец
еще
начать
обновление набора tblUser
имя name,
адрес=адрес@,
государство=@государству,
поле DepartmentID=@поле DepartmentID
где userId=@userId
set @result='запись обновлена !'
конец
конец
Что я уже пробовал:
общественные ihttpactionresult с PostEmpDetails(имя string ,int и поле DepartmentID , адрес строки , инт зарплату , строку состояния , int идентификатор пользователя )
{
if (!ModelState.Функция IsValid)
{
возврат BadRequest(ModelState);
}
// с помощью собственной хранимой процедуры
var spName = новый SqlParameter("@name", name);
var spState = новый SqlParameter("@state", state);
var spAddress = новый SqlParameter("@address", адрес);
var spDepartmentId = новый SqlParameter("@departmentId", departmentId);
ВАР spuser, который = новый объект sqlparameter("@имя пользователя", имя пользователя);
var spOut = новый SqlParameter
{
Имяпараметра = "@результате",
Значения Sqldbtype = Система.Данных.Значения sqldbtype.Тип nvarchar,
Размер = 100,
Направление = System.Data.ParameterDirection.Выход
};
ВАР пользователя = eContext.Базы данных.SQL-запрос&ЛТ;tbluser&ГТ; ("exec для tblDepartment_insertUpdate @имя пользователя,@имя,@государству, адрес@,@поле DepartmentID ,@результат ",
spuser, который, имяхранимойпроцедуры, spState, spAddress, spDepartmentId, носик
).ToList<tbluser>();
возвращение ОК(пользователей);
}
он сохраняет данные, но дает ошибку
Средство чтения данных несовместимо с указанным "EntityTestModel.tblUser". Член типа "userId" не имеет соответствующего столбца в считывателе данных с тем же именем.