انجام چهار عمل اصلی با استفاده از تکنولوژی linq در MVC

در این مقاله میخواهیم عملیات درج ،خواندن ،ویرایش و حذف اطلاعات را با استفاده از تکنولوژی linq روی پایگاه داده Sql در MVC انجام دهیم

انجام چهار عمل اصلی با استفاده از تکنولوژی linq در MVC

آکادمی برنامه نویسان ، برگزار کننده دوره های آموزش برنامه نویسی با استفاده از اساتید مجرب و حرفه ای در سراسر ایران .

[ جهت مشاهده دوره های درحال ثبت نام کلیک کنید ]

ارائه مدارک معتبر آموزشی و ورود به بازار کار .

انجام چهار عمل اصلی (CRUD) با استفاده از تکنولوژی linq در MVC

در ابتدا در پایگاه داده یک جدول به نام Employee به شکل زیر در پایگاه داده خود بسازید:



    CREATE TABLE [dbo].[Employee]  
    (  
        [id] [int] IDENTITY(1,1) NOT NULL,  
        [EmpName] [varchar](50) NOT NULL,  
        [EmpAddress] [varchar](50) NOT NULL,  http://www.c-sharpcorner.com/UploadFile/85ed7a/crud-operation-using-linq-to-sql-in-mvc492/
        [EmpEmailId] [varchar](50) NOT NULL,  
    )   

حال برنامه ویژوال استدیو خود را باز کنید و از طریق مسیر زیر یک پروژه جدید بسازید:

File => New => Project.

و Asp.net MVC 4  Web Application  را انتخاب و نام پروژه و مسیر آنرا تنظیم کنید سپس نوع پروژه را  Empty انتخاب کنید.

حال پس از ایجاد پروژه جدید روی نام پروژه کلیک راست کنید و گزینه Add  New Item وقسمت data  را کلیک کنید  سپس آیتم Linq to Sql Classes را اانتخاب  و رو ی دکمه Add کلیک کنید پس از انجام این مراحل یک فایل با پسوند dbml. مشاهده خواهید کرد از پنجره Server Explorer به پایگاه داده خود متصل شوید  و جدول Employee را درگ کنید تابه فایل dbml  شما اضافه شود:

حال نوبت به ساخت مدل یرای جدولمان می رسد روی پوشه Model  کلیک راست کرده گزینه Add وسپس Class را انتخاب کنید و نام employe   را برای کلاس وارد کنید بدنه کلاس را به شکل زیر بازنویسی کنید:


    namespace crudoperation_linq.Models  
    {  
        public class employe  
        {  
            public int id { get; set; }  
            public string employename { get; set; }  
            public string employeaddress { get; set; }  
            public string employeemailid { get; set; } 
        }  
    }   

پس از ساخت مدل نوبت به ساخت کنترلر میرسد رو ی پوشه Controllers کلیک راست کرده و یک کنترلر جدی از نوع empty  برای پیاده سازی چهار عمل اصلی ایجاد کنید:


    namespace crudoperation_linq.Controllers  
    {  
        public class empController : Controller  
        {  
            // GET: emp  
      
            DataClasses1DataContext db = new DataClasses1DataContext();  
            public ActionResult Index()  
            {  
                IList<employe> employelist = new List<employe>();  
                var query = from qrs in db.Employees select qrs;  
                var listdata = query.ToList();  
      
                foreach (var employedata in listdata)  
                {  
                    employelist.Add(new employe()  
                    {  
                        id = employedata.id,  
                        employename = employedata.EmpName,  
                        employeaddress = employedata.EmpAddress,  
                        employeemailid = employedata.EmpEmailId,  
                    });                
                }             
                return View(employelist);  
            }  
      
            public ActionResult Create()  
            {  
                employe emps = new employe();  
                return View(emps);  
            }  

            [HttpPost]  
            public ActionResult Create(employe mod)  
            {  
                Employee emps = new Employee();    
                emps.EmpName = mod.employename;  
                emps.EmpAddress = mod.employeaddress;  
                emps.EmpEmailId = mod.employeemailid;  
                db.Employees.InsertOnSubmit(emps);  
                db.SubmitChanges();  
                return RedirectToAction("Index");    
           }
      
            [HttpGet]  
            public ActionResult Edit(int id)  
            {  
                employe model = db.Employees.Where(val => val.id ==id).Select(val => new employe()  
                {  
                    id = val.id,  
                    employename = val.EmpName,  
                    employeaddress = val.EmpAddress,  
                    employeemailid = val.EmpEmailId  
                }).SingleOrDefault();  
      
                return View(model);  
              
            }  

            public ActionResult Edit(employe mod)  
            {  
                Employee emp = db.Employees.Where(val => val.id == mod.id).Single<Employee>();  
                emp.id = mod.id;  
                emp.EmpName = mod.employename;  
                emp.EmpAddress = mod.employeaddress;  
                emp.EmpEmailId = mod.employeemailid;               
                db.SubmitChanges();    
                return RedirectToAction("index");            
            }  
      
            public ActionResult Delete(int id)  
            {  
                employe emp = db.Employees.Where(val => val.id == id).Select(val => new employe()  
                   {  
                        id= val.id,  
                       employename  = val.EmpName,  
                       employeaddress = val.EmpAddress,  
                       employeemailid = val.EmpEmailId  
                    }).SingleOrDefault();  
      
                return View(emp);   
            }  

            [HttpPost]  
            public ActionResult Delete(employe mod)  
            {  
                Employee emp = db.Employees.Where(val => val.id == mod.id).Single<Employee>();  
                db.Employees.DeleteOnSubmit(emp);  
                db.SubmitChanges();                
                return RedirectToAction("Index");  
             }  
      
            public ActionResult Details (int id)  
            {  
               employe  emp = db.Employees.Where(val => val.id == id).Select(val => new employe()  
                {  
                    id = val.id,  
                    employename = val.EmpName,  
                    employeaddress = val.EmpAddress,  
                    employeemailid = val.EmpEmailId,  
                }).SingleOrDefault();  
                return View(emp);                  
            }    
        }     
    }   

حال برای هر عملیات باید ویو آنرا بسازیم ابندا برای متد Create  ویو میسازیم رو ی متد آن کلیک راست کرده و گزینه  add view  را انتخاب کنید:



    @model crudoperation_linq.Models.employe  
      
    @Scripts.Render("~/bundles/jquery")  
    @Scripts.Render("~/bundles/jqueryval")  
      
    @using (Html.BeginForm())   
    {  
        @Html.AntiForgeryToken()   
         <div class="form-horizontal">  
            <h4>employe</h4>  
            <hr />  
            @Html.ValidationSummary(true, "", new { @class = "text-danger" })  
            <div class="form-group">                
                 @Html.LabelFor(model => model.employename, htmlAttributes: new { @class = "control-label col-md-2" })  
                <div class="col-md-10">  
                    @Html.EditorFor(model => model.employename, new { htmlAttributes = new { @class = "form-control" } })  
                    @Html.ValidationMessageFor(model => model.employename, "", new { @class = "text-danger" })  
                </div>  
            </div>  
      
            <div class="form-group">  
                @Html.LabelFor(model => model.employeaddress, htmlAttributes: new { @class = "control-label col-md-2" })  
                <div class="col-md-10">  
                    @Html.EditorFor(model => model.employeaddress, new { htmlAttributes = new { @class = "form-control" } })  
                    @Html.ValidationMessageFor(model => model.employeaddress, "", new { @class = "text-danger" })  
                </div>  
            </div>  
      
            <div class="form-group">  
                @Html.LabelFor(model => model.employeemailid, htmlAttributes: new { @class = "control-label col-md-2" })  
                <div class="col-md-10">  
                    @Html.EditorFor(model => model.employeemailid, new { htmlAttributes = new { @class = "form-control" } })  
                    @Html.ValidationMessageFor(model => model.employeemailid, "", new { @class = "text-danger" })  
                </div>  
            </div>  
      
            <div class="form-group">  
                <div class="col-md-offset-2 col-md-10">  
                    <input type="submit" value="Create" class="btn btn-default" />  
                </div>  
            </div>  
        </div>  
    }  
      
    <div>  
        @Html.ActionLink("Back to List", "Index")  
    </div>   

حال برای دیدن خروجی و ثبت یک عضو جدید برنامه را اجرا کنید:

حال باد ویو مربوط به index که لیست افراد را نشان می دهد بسازیم:



    @model IEnumerable<crudoperation_linq.Models.employe>  
      
    <p>  
        @Html.ActionLink("Create New", "Create")  
    </p>  
    <table class="table">  
        <tr>  
            <th>  
                @Html.DisplayNameFor(model => model.employename)  
            </th>  
            <th>  
                @Html.DisplayNameFor(model => model.employeaddress)  
            </th>  
            <th>  
                @Html.DisplayNameFor(model => model.employeemailid)  
            </th>  
            <th></th>  
        </tr>  
      
    @foreach (var item in Model) {  
        <tr>  
            <td>  
                @Html.DisplayFor(modelItem => item.employename)  
            </td>  
            <td>  
                @Html.DisplayFor(modelItem => item.employeaddress)  
            </td>  
            <td>  
                @Html.DisplayFor(modelItem => item.employeemailid)  
            </td>  
            <td>  
                @Html.ActionLink("Edit", "Edit", new { id=item.id }) |  
                @Html.ActionLink("Details", "Details", new { id=item.id }) |  
                @Html.ActionLink("Delete", "Delete", new { id=item.id })  
            </td>  
        </tr>  
    }  
      
    </table>   

نوبت به ساخت ویو ویرایش  می رسد:



    @model crudoperation_linq.Models.employe  
      
    @Scripts.Render("~/bundles/jquery")  
    @Scripts.Render("~/bundles/jqueryval")  
      
      
    @using (Html.BeginForm())  
    {  
        @Html.AntiForgeryToken()  
          
        <div class="form-horizontal">  
            <h4>employe</h4>  
            <hr />  
            @Html.ValidationSummary(true, "", new { @class = "text-danger" })  
            @Html.HiddenFor(model => model.id)  
      
            <div class="form-group">  
                @Html.LabelFor(model => model.employename, htmlAttributes: new { @class = "control-label col-md-2" })  
                <div class="col-md-10">  
                    @Html.EditorFor(model => model.employename, new { htmlAttributes = new { @class = "form-control" } })  
                    @Html.ValidationMessageFor(model => model.employename, "", new { @class = "text-danger" })  
                </div>  
            </div>  
      
            <div class="form-group">  
                @Html.LabelFor(model => model.employeaddress, htmlAttributes: new { @class = "control-label col-md-2" })  
                <div class="col-md-10">  
                    @Html.EditorFor(model => model.employeaddress, new { htmlAttributes = new { @class = "form-control" } })  
                    @Html.ValidationMessageFor(model => model.employeaddress, "", new { @class = "text-danger" })  
                </div>  
            </div>  
      
            <div class="form-group">  
                @Html.LabelFor(model => model.employeemailid, htmlAttributes: new { @class = "control-label col-md-2" })  
                <div class="col-md-10">  
                    @Html.EditorFor(model => model.employeemailid, new { htmlAttributes = new { @class = "form-control" } })  
                    @Html.ValidationMessageFor(model => model.employeemailid, "", new { @class = "text-danger" })  
                </div>  
            </div>  
      
            <div class="form-group">  
                <div class="col-md-offset-2 col-md-10">  
                    <input type="submit" value="Save" class="btn btn-default" />  
                </div>  
            </div>  
        </div>  
    }  
      
    <div>  
        @Html.ActionLink("Back to List", "Index")  
    </div>   

حال باید ویو مربوط به نمایش جزئیات را بسازیم:



    @model crudoperation_linq.Models.employe  
      
    <div>  
        <h4>employe</h4>  
        <hr />  
        <dl class="dl-horizontal">  
            <dt>  
                @Html.DisplayNameFor(model => model.employename)  
            </dt>  
      
            <dd>  
                @Html.DisplayFor(model => model.employename)  
            </dd>  
      
            <dt>  
                @Html.DisplayNameFor(model => model.employeaddress)  
            </dt>  
      
            <dd>  
                @Html.DisplayFor(model => model.employeaddress)  
            </dd>  
      
            <dt>  
                @Html.DisplayNameFor(model => model.employeemailid)  
            </dt>  
      
            <dd>  
                @Html.DisplayFor(model => model.employeemailid)  
            </dd>  
      
        </dl>  
    </div>  
    <p>  
        @Html.ActionLink("Edit", "Edit", new { id = Model.id }) |  
        @Html.ActionLink("Back to List", "Index")  
    </p>   

و در آخر ساخت ویو حذف می ماند:



    @model crudoperation_linq.Models.employe  
      
    <h3>Are you sure you want to delete this?</h3>  
    <div>  
        <h4>employe</h4>  
        <hr />  
        <dl class="dl-horizontal">  
            <dt>  
                @Html.DisplayNameFor(model => model.employename)  
            </dt>  
      
            <dd>  
                @Html.DisplayFor(model => model.employename)  
            </dd>  
      
            <dt>  
                @Html.DisplayNameFor(model => model.employeaddress)  
            </dt>  
      
            <dd>  
                @Html.DisplayFor(model => model.employeaddress)  
            </dd>  
      
            <dt>  
                @Html.DisplayNameFor(model => model.employeemailid)  
            </dt>  
      
            <dd>  
                @Html.DisplayFor(model => model.employeemailid)  
            </dd>  
      
        </dl>  
      
        @using (Html.BeginForm()) {  
            @Html.AntiForgeryToken()  
      
            <div class="form-actions no-color">  
                <input type="submit" value="Delete" class="btn btn-default" /> |  
                @Html.ActionLink("Back to List", "Index")  
            </div>  
        }  
    </div>