مشاهده دست آورد نظرسنجی: دوستم نظرت در مورد آموزش چطور بود؟

رای دهنده
98. شما نمی توانید در این رای گیری رای بدهید
  • خوب بود

    82 83.67%
  • بدرد بخور بود

    14 14.29%
  • بدرد بخور نبود

    1 1.02%
  • بد بود

    1 1.02%
نمایش نتایج 1 تا 40 از 59

نام تاپیک: آموزش استفاده از Entity Framework در معماری 3 لایه - همراه با مثال عملی

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    کاربر دائمی آواتار mohsen_f_b
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    تهران
    سن
    34
    پست
    401

    Post آموزش استفاده از Entity Framework در معماری 3 لایه - همراه با مثال عملی

    باسلام و عرض ادب خدمت تمام دوستان عزیز و گرامی خودم در سایت بزرگ برنامه نویسان ایران زمین.
    بنده چند وقتی هستش که از ADO.NET سوئیچ کردم به برنامه نویسی به سبک Entity Framework که این مدیون جناب آقای کرامتی و کلاس های خوب ایشان هستم.
    چند روزی بود که می خواستم از Entity Freamwork در معماری لایه ای استفاده کنم.
    همه جا خوندم که Entity Framework قسمت Data Access Layer رو در بر میگیره.شروع کردم به جستجو و کسب اطلاعات تا اینکه توانستم اینکار رو انجام بدم.
    شاید خنده تون بگیره که این کاره ساده چیه که من دارم در موردش تاپیک میزنم.اینو که همه بلدن.
    من این آموزش رو میزارم برای کسایی که تازه وارد هستن و دنبال یک منبع فارسی برای این نوع برنامه نویسی هستن.
    یکی از استادهای دانشگاهم همیشه می گفت راه رسیدن به خدا زیاده، منم اینجا از این جمله استادم استفاده می کنم و می گم راه و روش برنامه نویسی معماری لایه ای بهمراه Entity Framework زیاده و منم یک راهشو که شاید بدترین نوع باشه رو اینجا می گم تا یک سرنخ برای شروع و رسیدن به نحوه دیگه کدنویسی در این زمینه برای خودم و دوستان باشد.
    به امید اینکه این آموزش مورد توجه دوستان واقع شود.
    از دوستان دیگر که تجربه بسیار بالاتری در این زمینه دارن خواهش می کنم که روشهای دیگه ای که استفاده می کنن به ما هم یاد بدن.
    توجه داشته باشید در آخر سورس برنامه بهمراه فایل آموزشی برای دانلود قرار داده می شود.
    ببخشید که پرحرفی کردم.
    بریم و شروع کنم.

    برنامه تحت وب نوشته می شود
    زبان برنامه نویسی : C#‎‎‎‎‎
    بانک اطلاعاتی : SQL Server

    فایل پروژه اضافه شد.

    قدم اول : سناریو
    خوب دوستان شروع کنیم. میخواهیم بک برنامه بنویسیم که نام، نام خانوادگی بهمراه شماره تلفن همراه شخص رو بگیریم و در دیتابیس ذخیره کنیم.
    بتونیم با تکنولوژی های معماری لایه و Entity Framework هر 4 عمل اصلی یعنی اضافه کردن، ویرایش کردن، حذف کردن و نمایش را اجرا کنیم.
    نکته : از Entity Framework – Database First استفاده می کنیم.

    قدم دوم : ساخت پایگاه داده
    یک پایگاه داده با نام Person ایجاد کنید.
    در این پایگاه داده یک جدول با نام Contact با اجزای زیر بسازین.



    اینم از دیتابیس

    قدم سوم : ساخت Stored Procedures مورد نیاز
    ما برای همه عملیات ها از Stored Procedures استفاده می کنیم.
    خوب نیاز به 5 تا Stored Procedures برای این برنامه داریم.
    1- Contact_SelectAll که یک resultset حاوی تمامی رکوردهای جدول Contact را برای ما برمیگرداند.

    CREATE PROCEDURE Contact_SelectAll

    AS

    SET NOCOUNT ON

    SELECT ID,Name,Family,Mobile,InsertDate,UpdateDate

    FROM Contact

    RETURN



    2- Contact_SelectById که یک resultset حاوی رکورد مورد نظر ما از جدول Contact برمیگرداند.

    CREATE PROCEDURE Contact_SelectById
    @ID int
    AS
    SET NOCOUNT ON

    SELECT ID,Name,Family,Mobile,InsertDate,UpdateDate
    FROM Contact
    Where ID = @ID

    RETURN


    3- Contact_Insert برای انجام عملیات Insert که یک resultset برابر ID رکورد ثبت شده برای ما برمیگرداند


    CREATE PROCEDURE Contact_Insert
    @Name nVarchar(50),
    @Family nVarchar(50),
    @Mobile nVarchar(16),
    @InsertDate Datetime,
    @UpdateDate Datetime
    AS
    Insert Into Contact
    (Name,Family,Mobile,InsertDate,UpdateDate)
    Values
    (@Name,@Family,@Mobile,@InsertDate,@Updatedate)

    SELECT CAST(SCOPE_IDENTITY() AS INT) AS Id

    4- Contact_Update برای انجام عملیات ویرایش استفاده میشود


    CREATE PROCEDURE Contact_Update
    @ID int,
    @Name nVarchar(50),
    @Family nVarchar(50),
    @Mobile nVarchar(16),
    @InsertDate Datetime
    AS
    SET NOCOUNT ON

    Update Contact
    Set Name = @Name,
    Family=@Family,
    Mobile=@Mobile,
    InsertDate=@InsertDate
    Where
    ID = @ID
    RETURN

    5- Contact_Delete برای حذف رکورد مورد نظر


    CREATE PROCEDURE Contact_Delete
    @ID int
    AS
    SET NOCOUNT ON
    Delete Contact
    Where
    ID = @ID
    RETURN

    خوب عزیزان اینم از Stored Procedures های مورد نیاز



    قدم چهارم : ساخت لایه Data Access Layer
    1-
    1- باز کردن Visual Studio 2010
    2- ایجاد یک پروژه جدید از نوع Class Library project با زبان C#‎‎‎‎‎‎‎‎ به نام PersonDAL
    3- توجه داشته باشید Solution Name را بروی Person تغییر نام دهید.




    4- حالا بروی نام Project کلیک راست کنید، Add و بعدش New Item



    5- انتخاب ADO.NET Entity Data Model و اسمش رو برابر با PersonDataModel قرار دهید

    6- Generate from database رو انتخاب کنید و بروی Next کلیک کنید


    7- پایگاه داده خود را انتخاب کنید

    8- انتخاب Table و Stored Procedures های طراحی شده و کلیک بر روی Finishe


    9- تا اینجا مدل مدنظر خودتون رو به پروژه اضافه کردین حالا یک کلاس به نام CantactData.cs به پروژه اضافه کنید.



    10- حالا کلاس را باز کنید و در بدنه اصلی کلاس

    class ContactData

    را به
    public static class ContactData

    تغییر دهید.


    11- حالا باید Stored Procedures را بعنوان یک Function به Entity Framework بشناسانیم.
    برای اینکار بر روی PersonDataModel.edmx کلیک کنید تا صفحه مربوطه باز شود.


    بروی Contact کلیک راست کرده و Add بعد Funcation Import… کلیک کرده

    صفحه باز شده به شکل زیر میباشد

    از Combo Box مربوط به Stored Procedure Name اسم Cantact_ Delete رو انتخاب کنید و گزینه None رو انتخاب کنید و نام Function را وارد کنید

    دوباره به مرحله Function Import بروید تا Function بعدی را Add کنیم
    خوب به Add کردن Function ثبت اطلاعات جدید Insert دقت کنید.
    به دلیل اینکه بعد از ثبت اطلاعات ID رکورد جدید را برمیگرداند به شکل زیر تعریف می شود.


    برای 2 Stored Procedure مربوط به نمایش اطلاعات Cantact_SelectAll و Cantact_SelectById به عکس هر 2 توجه فرمایید.
    اول به صفحه Function Import رفته و مانند عکس ها زیر عمل کنید



    و برای Stored Procedure ویرایش اطلاعات Contact_Update به صفحه Function Import رفته و تنظیمات مانند عکس را انجام دهید


    خوب حالا تمام Function های مورد نیاز آماده شد.
    12- حالا به کلاسی که ساخته ایم میرویم و عملیات های مورد نیاز رو برای Function ها تعریف میکنیم.
    کدها به شکل زیر میباشد.

    #region Insert
    public static int Insert(string name, string family, string mobile, DateTime insertDate)
    {
    using (PersonEntities db = new PersonEntities())
    {
    return Insert(db, name, family, mobile, insertDate);
    }
    }
    public static int Insert(PersonEntities db, string name, string family, string mobile, DateTime insertDate)
    {
    return db.Cantact_Insert(name, family, mobile, insertDate, insertDate).ElementAt(0).Value;
    }
    #endregion


    #region Update
    public static void Update(int id, string name, string family, string mobile, DateTime updateDate)
    {
    using (PersonEntities db = new PersonEntities())
    {
    Update(db, id, name, family, mobile, updateDate);
    }
    }
    public static void Update(PersonEntities db, int id, string name,
    string family, string mobile, DateTime updateDate)
    {
    db.Contact_Update(id, name, family, mobile, updateDate);
    }
    #endregion

    #region Delete
    public static void Delete(int id)
    {
    using (PersonEntities db = new PersonEntities())
    {
    Delete(db, id);
    }
    }
    public static void Delete(PersonEntities db, int id)
    {
    db.Contact_Delete(id);
    }
    #endregion

    #region SelectById
    public static Contact SelectById(int id)
    {
    using (PersonEntities db = new PersonEntities())
    {
    return SelectById(db, id);
    }
    }
    public static Contact SelectById(PersonEntities db, int id)
    {
    return db.Contact_SelectById(id).ElementAtOrDefault(0);
    }
    #endregion

    #region Select
    public static List<Contact> SelectAll()
    {
    using (PersonEntities db = new PersonEntities())
    {
    return SelectAll(db);
    }
    }
    public static List<Contact> SelectAll(PersonEntities db)
    {
    return db.Contact_SelectAll().ToList();
    }
    #endregion





    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace PersonDAL
    {
    public static class ContactData
    {
    #region Insert
    public static int Insert(string name, string family, string mobile, DateTime insertDate)
    {
    using (PersonEntities db = new PersonEntities())
    {
    return Insert(db, name, family, mobile, insertDate);
    }
    }
    public static int Insert(PersonEntities db, string name, string family, string mobile, DateTime insertDate)
    {
    return db.Cantact_Insert(name, family, mobile, insertDate, insertDate).ElementAt(0).Value;
    }
    #endregion

    #region Update
    public static void Update(int id, string name, string family, string mobile, DateTime updateDate)
    {
    using (PersonEntities db = new PersonEntities())
    {
    Update(db, id, name, family, mobile, updateDate);
    }
    }
    public static void Update(PersonEntities db, int id, string name,
    string family, string mobile, DateTime updateDate)
    {
    db.Contact_Update(id, name, family, mobile, updateDate);
    }
    #endregion

    #region Delete
    public static void Delete(int id)
    {
    using (PersonEntities db = new PersonEntities())
    {
    Delete(db, id);
    }
    }
    public static void Delete(PersonEntities db, int id)
    {
    db.Contact_Delete(id);
    }
    #endregion

    #region SelectById
    public static Contact SelectById(int id)
    {
    using (PersonEntities db = new PersonEntities())
    {
    return SelectById(db, id);
    }
    }
    public static Contact SelectById(PersonEntities db, int id)
    {
    return db.Contact_SelectById(id).ElementAtOrDefault(0);
    }
    #endregion

    #region Select
    public static List<Contact> SelectAll()
    {
    using (PersonEntities db = new PersonEntities())
    {
    return SelectAll(db);
    }
    }
    public static List<Contact> SelectAll(PersonEntities db)
    {
    return db.Contact_SelectAll().ToList();
    }
    #endregion
    }
    }


    خوب دوستان عزیز تا اینجا Data Access Layer رو باهم طراحی کردیم.
    انشالله فردا هم تا آخر برنامه میریم.

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

    ادامه دارد ...
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله mohsen_f_b : جمعه 29 اردیبهشت 1391 در 22:17 عصر

تاپیک های مشابه

  1. پاسخ: 25
    آخرین پست: سه شنبه 10 تیر 1393, 00:14 صبح
  2. مشکل در استفاده از Entity Framework در معماری لایه ای
    نوشته شده توسط Mohsen_IS در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: یک شنبه 24 اردیبهشت 1391, 23:51 عصر
  3. جایگاه Entity Framework در معماری 3 لایه
    نوشته شده توسط reza344 در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 4
    آخرین پست: سه شنبه 20 دی 1390, 07:35 صبح
  4. جایگاه Entity Framework در معماری 3 لایه
    نوشته شده توسط reza344 در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: دوشنبه 19 دی 1390, 21:57 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •