ahmed_sa Ответов: 1

Процедура или функция spadddepartment имеет слишком много заданных аргументов


Проблема

Я получаю ошибку процедура или функция spAddDepartment имеет слишком много заданных аргументов . Как ее решить .

Подробности

при вставке данных в таблицу department с помощью хранимой процедуры spAddDepartment с использованием fluent api в mvc5 я получаю ошибку выше

Департамент стол

CREATE TABLE [dbo].[Departments](

    [DepartmentID] [int] IDENTITY(1,1) NOT NULL,

    [DepartmentName] [nvarchar](50) NULL,

    [IsActive] [bit] NULL


Хранимая процедура spAddDepartment

ALTER Procedure [dbo].[spAddDepartment]

@DepartmentName    nvarchar(50)

as 

Begin 

  Insert into Departments values(@DepartmentName,1) 

End


Модель Управления

public partial class Department

    {

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]

        public Department()

        {

            Employees = new HashSet<Employee>();

        }



        public int DepartmentID { get; set; }



        [StringLength(50)]

        public string DepartmentName { get; set; }



        public bool? IsActive { get; set; }



        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]

        public virtual ICollection<Employee> Employees { get; set; }

    }


Контекст базы данных

protected override void OnModelCreating(DbModelBuilder modelBuilder)

        {



            modelBuilder.Entity<Department>()

.MapToStoredProcedures(p => p.Insert(sp => sp.HasName("spAddDepartment").Parameter(pm => pm.DepartmentName, "DepartmentName")));



        }


Контроллер управления

[HttpPost]

        public ActionResult Insert(Department depart)

        {





            depart.IsActive = true;



            hr.Departments.Add(depart);

            hr.SaveChanges();

            return View(depart);

        }


Вид отдела

<div class="form-horizontal">
        <h4>Department</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.DepartmentName, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.DepartmentName, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.DepartmentName, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.IsActive, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                <div class="checkbox">
                    @Html.EditorFor(model => model.IsActive)
                    @Html.ValidationMessageFor(model => model.IsActive, "", new { @class = "text-danger" })
                </div>
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>


Что я уже пробовал:

Procedure Or Function SpAddDepartment Has Too Many Arguments Specified

1 Ответов

Рейтинг:
0

ZurdoDev

Это очень четкое сообщение об ошибке, и вам придется отлаживать то, что происходит, так как мы не можем запустить весь ваш код. Вы передаете SQL более одного аргумента, и хранимая процедура ожидает только 1.

Это может помочь запустить SQL Profiler, чтобы точно увидеть, что отправляется в SQL, и это может помочь вам отследить, где находится проблема.