在C#中从实体框架调用存储过程

问题描述:

这是我的输出,看起来像...

这是我的后端

Beta_DatabaseEntities db = new Beta_DatabaseEntities();
table2 tb = new table2();

int ID;
string Name;
int Salary;

public void Entry()
{
        ID = Convert.ToInt16(id.Text);
        Name = name.Text;
        Salary = Convert.ToInt32(salary.Text);
}

private void insert_Click(object sender, EventArgs e)
{
        Entry();
        tb.Id = ID;
        tb.Name = Name;
        tb.Salary = Salary;
        db.table1.Add(tb);
        db.SaveChanges();
        db.Database.ExecuteSqlCommand("GradeEntry "+)
}

我的存储过程:

create procedure GradeEntry
     (@ID int, @name nvarchar(50), @salary int)
As
Begin
    if(@salary >= 2500)
    Begin
        insert into Table2 values(@ID, @name, 'A+', @salary)
    End
    else if(@salary >= 1000)
    Begin
        insert into Table2 values(@ID, @name, 'A', @salary)
    End
    else if(@salary >= 500)
    Begin
        insert into Table2 values(@ID, @name, 'B', @salary)
    End
    else
    Begin
        insert into Table2 values(@ID, @name, 'Interni', @salary)
    End
End

我正在使用Entity Framework,但无法弄清楚如何调用在C#中工作的存储过程.我正在使用Visual Studio 2013

I am working with Entity Framework but can't figure out how to call the stored procedure working in C#. I am using Visual Studio 2013

我只想使用Entity Framework从C#调用存储过程.

I just want to call the stored procedure from C# using Entity Framework.

ExecuteSqlCommand

您只需要添加EXEC,然后传入参数:

You just need to add EXEC, then pass in the parameters:

db.Database.ExecuteSqlCommand("EXEC GradeEntry @ID, @name, @salary",
    new SqlParameter("@ID", ID),
    new SqlParameter("@name", Name),
    new SqlParameter("@salary", Salary),
)

ExecuteSqlCommand 采用数组对象,作为参数.

ExecuteSqlCommand takes an array of object, as parameters.