استفاده از Stored Procedure در Entity Framework

در این مقاله میخواهیم از Stored Procedure همراه با پارامتر ورودی در Entity Framework استفاده کنیم

استفاده از Stored Procedure در Entity Framework

دراین مقاله میخواهیم به نحوه فراخوانی و اجرای یک Stored Procedure همراه با پرامتر ورودی در Entity Framework بپردازیم در این مقاله از پایگاه داده آموزشی Northwind استفاده کردیم یک Procedure بر روی جدول Customers مینویسم که یک پرامتر ورودی دارد و بر روی این جدول به جستجو می پردازد:


CREATE PROCEDURE Customers_SearchCustomers
      @ContactName NVARCHAR(30)
AS
BEGIN
      SET NOCOUNT ON;
      SELECT TOP 10 CustomerId
            ,ContactName
            ,City
            ,Country
      FROM Customers
      WHERE ContactName LIKE '%' + @ContactName + '%'
END

حال به تنظیمات Entity برای استفاده از SP می پردازیم ابتدا یک entity data model  به پروژه اضافه میکنیم:

به پایگاه داده Northwind متصل شده واز لیست sp ها Customers_SearchCustomers  را انتخاب کنید:

سپس NorthwindModel خود را انتخاب کنید سپس روی آن کلیک راست کرده گزینه Add و سپس Function Import. را انتخاب کنید در پنجره باز شده ابتدا باید نام sp خود را انتخاب کنید پسCustomers_SearchCustomer

را انتخاب میکنیم سپس روی دکمه Get Column Information کلیک کنید:

سپس روی دکمه Complex Type Class کلیک وروی دکمه ok بزنید:

 

صفحه aspx خود را به شکل زیر ویرایش کنید:

 <asp:TextBox ID="txtCustomerName" runat="server" />
<asp:Button Text="Search" runat="server" OnClick="SearchCustomers" />
<br />
<br />
<asp:GridView ID="gvCustomers" runat="server" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField DataField="CustomerId" HeaderText="Customer Id" ItemStyle-Width = "80" />
        <asp:BoundField DataField="ContactName" HeaderText="Contact Name" ItemStyle-Width = "150" />
        <asp:BoundField DataField="City" HeaderText="City" ItemStyle-Width = "100" />
        <asp:BoundField DataField="Country" HeaderText="Country" ItemStyle-Width = "100" />
    </Columns>
</asp:GridView>

ودر صفحه aspx.cs :


protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        NorthwindEntities entities = new NorthwindEntities();
        gvCustomers.DataSource = entities.SearchCustomers(string.Empty);
        gvCustomers.DataBind();
    }
}
 
protected void SearchCustomers(object sender, EventArgs e)
{
    NorthwindEntities entities = new NorthwindEntities();
    gvCustomers.DataSource = entities.SearchCustomers(txtCustomerName.Text.Trim());
    gvCustomers.DataBind();
}

حالا برنامه رو اجرا کنید:

فایل های ضمیمه