Entity Framework 6 (コードファースト) でストアド プロシージャを呼び出す方法は? 質問する

Entity Framework 6 (コードファースト) でストアド プロシージャを呼び出す方法は? 質問する

私は Entity Framework 6 を初めて使用しており、プロジェクトにストアド プロシージャを実装したいと考えています。次のようなストアド プロシージャがあります。

ALTER PROCEDURE [dbo].[insert_department]
    @Name [varchar](100)
AS
BEGIN
    INSERT [dbo].[Departments]([Name])
    VALUES (@Name)

    DECLARE @DeptId int

    SELECT @DeptId = [DeptId]
    FROM [dbo].[Departments]
    WHERE @@ROWCOUNT > 0 AND [DeptId] = SCOPE_IDENTITY()

    SELECT t0.[DeptId]
    FROM [dbo].[Departments] AS t0
    WHERE @@ROWCOUNT > 0 AND t0.[DeptId] = @DeptId
END

Departmentクラス:

public class Department
{
    public int DepartmentId { get; set; }       
    public string Name { get; set; }
}

modelBuilder 
.Entity<Department>() 
.MapToStoredProcedures(s => 
s.Update(u => u.HasName("modify_department") 
               .Parameter(b => b.Department, "department_id") 
               .Parameter(b => b.Name, "department_name")) 
 .Delete(d => d.HasName("delete_department") 
               .Parameter(b => b.DepartmentId, "department_id")) 
 .Insert(i => i.HasName("insert_department") 
               .Parameter(b => b.Name, "department_name")));

protected void btnSave_Click(object sender, EventArgs e)
{
    string department = txtDepartment.text.trim();

    // here I want to call the stored procedure to insert values
}

私の問題は、ストアド プロシージャを呼び出して、それにパラメーターを渡すにはどうすればよいかということです。

ベストアンサー1

次のようにして、クラス内でストアド プロシージャを呼び出すことができますDbContext

this.Database.SqlQuery<YourEntityType>("storedProcedureName",params);

ただし、ストアドプロシージャがサンプルコードとして複数の結果セットを返す場合は、MSDNのこの役立つ記事を参照してください。

複数の結果セットを持つストアド プロシージャ

おすすめ記事