Stored Procedure توسط Entity Framework

پنجشنبه 4 تیر 1394

Stored Procedure یا Sp یا به زبان فارسی " رویه های ذخیره شده " اشیایی اجرا پذیر در بانک اطلاعاتی SQL Server هستند که شامل یک یا چندین دستور SQL می شود ، این رویه ها میتوانند پارامتر های ورودی و خروجی داشته باشند. در این مقاله با نحوه کار با Stored Procedure ها توسط Entity Framework آشنا خواهیم شد.

Stored Procedure توسط Entity Framework

ابتدا در sql server یک بانک اطلاعاتی با نام StudentStoredProcedureDB ساخته و مانند شکل زیر جدولی در آن با نام StudentStoredProcedure ایجاد نمایید.

از اسکریپت زیر برای ساخت جداول و Stored Procedure های آن استفاده نمایید.

Create procedure InsertStudentInfo  
@Name nvarchar(50),  
@Gender nvarchar(50),  
@Branch nvarchar(50)  
as  
Begin  
Insert into StudentStoredProcedure values (@Name, @Gender,@Branch)  
End  
Go  
Create procedure UpdateStudentInfo  
@ID int,  
@Name nvarchar(50),  
@Gender nvarchar(50),  
@Branch nvarchar(50)  
as  
Begin  
Update StudentStoredProcedure Set Name = @Name, Gender =@Gender,  
Branch = @Branch  
where ID = @ID  
End  
Go  
Create procedure DeleteStudentInfo  
@ID int  
as  
Begin  
Delete from StudentStoredProcedure where ID = @ID  
End  
Go 

پس از اجرای کد زیر به Programmability رفته و طبق شکل می توانید Stored Procedure های ساخته شده با نام های “InsertStudentInfo”, “UpdateStudentInfo” and “DeleteStudentInfo” مشاهده نمایید.

حالا یک پروژه winform ساخته و با راست کلیک کردن روی نام پروژه add new item را زده و ADO.Net Entity Data Model را انتخاب نمایید. سپس EF Designer from database را انتخاب کنید.

connection و جدول را انتخاب کرده و app.config را “SP_EntityFramework” نامگذاری نمایید و روی Next کلیک نمایید.

طبق شکل زیر بانک اطلاعاتی و Stored Procedure ها را انتخاب نمایید و روی Finish کلیک کنید.

حال مدل Entity و Stored Procedure ساخته شده اما شما آنها را نخواهید دید. برای این که بتوانید آنها را ببینید کافی است طبق شکل در Entity Model Designer راست کلیک کرده و "Model Browser" را انتخاب نمایید.

حالا پوشه Stored Procedures را باز کرده و می توانید Stored Procedure ها را مشاهده نمایید.

حالا به Mapping Details رفته و می توانید <Select Insert Function> و <Select Update Function> و <Select Delete Function> را مشاهده نمایید و برای هر کدام یک Stored Procedure در نظر بگیرید.

حالا در این صفحه راست کلیک کرده و روی Validate کلیک نمایید.

یک فرم به صفحه اضافه کرده و یک  DataGridView از جعبه ابزار به آن اضافه کنید.

همانند شکل روی تگ کوچک آن

کلیک کرده و روی “add column” کلیک نمایید.

پس از اضافه کردن ستون ها DataGridView شما مانند شکل می شود.

دوباره به تگ DataGridView رفته و گزینه DataSource آن را BindingdataSource1 نامگذاری نمایید.

روی Add project to Data Source کلیک کرده سپس Database و select Dataset را به ترتیب انتخاب نمایید. سپس رشته اتصال را مشخص نمایید. پس از کلیک روی Next جداول را مشاهده خواهید کرد. جداول و Stored Procedure ها را انتخاب کرده و روی OK کلیک نمایید.

زمانیکه از برنامه اجرا می گیرید داده ها را در DataGridView مشاهده خواهید کرد.

کدهای زیر به صورت خودکار ایجاد خواهند شد:

private void Form1_Load(object sender, EventArgs e)  
{  
   // TODO: This line of code loads data into the 'for_entityDataSet.StudentStoredProcedure' table. You can use, or remove it, as needed.  
   this.studentStoredProcedureTableAdapter.Fill(this.for_entityDataSet.StudentStoredProcedure);  
} 

روی DataGridView دوبار کلیک کرده و کدهای مربوط به Delele و insert را بنویسید.

builder.DataSource = "MUNESH ";  
builder.InitialCatalog = "ForEntity";  
builder.IntegratedSecurity = true;
private void Form1_Load(object sender, EventArgs e)   
{  
    // TODO: This line of code loads data into the 'for_entityDataSet.StudentStoredProcedure' table. this.studentStoredProcedureTableAdapter.Fill(this.for_entityDataSet.StudentStoredProcedure);  
}  
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)   
{  
    //delete the row form database on gridview buttion click  
    if (e.ColumnIndex == 1)   
    {  
        using(SqlConnection conn = new SqlConnection(builder.ToString()))   
        {  
            using(SqlCommand cmd = new SqlCommand("Ten Most Expensive Products", conn))   
            {  
                try   
                {  
                    conn.Open();  
                    cmd.CommandType = CommandType.StoredProcedure;  
                    // _customQuery = new CustomQuery();  
                    // SqlCommand sqlcmd= new SqlCommand();  
                    SqlParameter parm = null;  
                    cmd.CommandText = "DeleteStudentInfo";  
                    cmd.Parameters.AddWithValue("@ID", Convert.ToInt64(dataGridView1.Rows[e.RowIndex].Cells[2].Value));  
                    cmd.ExecuteNonQuery();  
                    conn.Close();  
                    Form1_Load(sender, e);  
                } catch {}  
            }  
        }  
    }  
    //INSERT into the row form database on gridview buttion click  
    if (e.ColumnIndex == 0)   
    {  
        using(SqlConnection conn = new SqlConnection(builder.ToString()))   
        {  
            using(SqlCommand cmd = new SqlCommand("Ten Most Expensive Products", conn))   
            {  
                try   
                {  
                    conn.Open();  
                    cmd.CommandType = CommandType.StoredProcedure;  
                    // _customQuery = new CustomQuery();  
                    // SqlCommand sqlcmd= new SqlCommand();  
                    SqlParameter parm = null;  
                    cmd.CommandText = "InsertStudentInfo";  
                    cmd.Parameters.AddWithValue("@Name", "MUNESH");  
                    cmd.Parameters.AddWithValue("@GENDER", "MALE");  
                    cmd.Parameters.AddWithValue("@BRANCH", "IT")  
                    cmd.ExecuteNonQuery();  
                    conn.Close();  
                    Form1_Load(sender, e);  
                } catch {}  
            }  
        }  
    }  
}

آموزش سی شارپ

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 2k بازدید
  • 7 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید