Stored Procedure توسط Entity Framework
پنجشنبه 4 تیر 1394Stored Procedure یا Sp یا به زبان فارسی " رویه های ذخیره شده " اشیایی اجرا پذیر در بانک اطلاعاتی SQL Server هستند که شامل یک یا چندین دستور SQL می شود ، این رویه ها میتوانند پارامتر های ورودی و خروجی داشته باشند. در این مقاله با نحوه کار با 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 {}
}
}
}
}
- C#.net
- 3k بازدید
- 7 تشکر