ساخت کلاس Entity Framework برای DataLayer

سه شنبه 20 تیر 1396

هر زمان که شما پروژه ای را با استفاده ازEntity Framework توسعه می دهید، شما نیاز دارید یک کلاس در لایه دیتا برای دسترسی به هر شی که در مدلتان است ایجاد کنید.این تولیدکننده این کار را برای شما انجام می دهد.

ساخت کلاس Entity Framework برای DataLayer

مقدمه

ما این کلاس را برای تولید کدهای لایه دیتایمان با استفاده از  entity Framework و بر اساس قالب فایل ها نوشته ایم.به Sql Server متصل میشود و جدول ها ، ویو ها و ستون های آن ها را میخواند.با کلیک شما ، کلاس پایه لایه دیتا را ایجاد میکند و میتوانید براحتی آن را در پروژه خود پیاده سازی کنید.

شما میتوانید کد های قالب آن را تغییر بدهید و به vb ترجمه کنید و از آن استفاده نمایید و یا متدهایی به آن بیافزایید.

اتصال به SQL server

در ابتدا نیاز است که به دیتا بیس خود متصل شوید.

تولید کننده کد

حالا چند متغیر مربوط به پروژه خود را باید پر کنید، یک جدول انتخاب کنید، ستون primary key و مرتب سازی آن را انتخاب نمایید و بر روی "Generate Class" کلیک کنید.

متدهای تولیدکننده

در داخل قالب فایل ها تعدادی متد پیش فرض داریم که به وسیله تولید کننده ایجاد شده اند.

در صورتی که جدول شما شامل ستون هایی مانند "DELETED", "CREATED", UPDATED"  باشد، این تولید کننده تصمیم می گیرد که کدام خط نیاز است که تولید شود.

به عنوان مثال : شما ستون "DELETED" را دارید که از آن برای علامت گذاری در هنگام حذف استفاده میکنید که این را تولیدکننده میتواند تشخیص دهد.

متدهای زیر برای جدول تولید خواهد شد:

Create (رکورد)

Update (رکورد)

DeleteById (رکورد)

DropById (رکورد)

GetById (رکورد)

GetList (لیستی از رکورد ها)

CleanMarkedAsDeleted (حذف کردن داده های مشحص شده)

 متدهای زیر برای View تولید خواهد کرد:

GetById (رکورد)

GetList (لیستی از رکورد ها)

 افزودن

دو گزینه اضافی در دسترس است:

تولید کلاس DatabaseException ، که در هر پروژه فقط یکبار مورد نیاز است.

تولید یک کلاس برای دریافت یک SelectList  از پروژه Mvc است.که شما میتوانید براحتی از این کلاس برای پر کردن Combo boxها و List های موجود در ViewModel با استفاده از داده مورد نظر استفاده کنید.

استفاده کردن از تولید کننده کد برای پروژه نهایی خود

به زودی شما کلاس تولید شده را در پروژه EF خود پیاده سازی میکنید.شما میتوانید از این به این صورت استفاده کنید:

مثال بر اساس مدل VEREIN است:

یک لیست از تمام اشیاء VEREIN  دریافت کن.

List<VEREIN> lst = EF.Verein.GetList();

یک شی خاص از VEREIN  دریافت کن.

Guid id = new Guid("7125A5EA-25EA-4C3F-A123-415506246359");
VEREIN verein = EF.Verein.GetByID(id);

منو contextکامل است زمانیکه شما از این کلاس استفاده میکنید:

Exception

کلاس های تولید شده ، هر کدام به یک کلاس DatabaseException  مجزا نیاز دارند ،  که در آن رویدادهای مورد نظرتان را بر اساس نیازتان بسازید.

کلاس تولیدکننده استثنا:

using System;

using System.Runtime.Serialization;

/// <summary>
/// Code generated 01.07.2017 09:50:23 by EFClassGenerator version 1.0.0.0
/// Template last modified 2017-06-23
/// </summary>

namespace TestProject
{
    [Serializable]
    public class DatabaseException : Exception
    {
        // Constructors
        public DatabaseException(string message)
            : base(message)
        {
        }
        public DatabaseException(string message, Exception innerException)
            : base(message)
        {
        }
        public DatabaseException(string format, params object[] args)
        : base(string.Format(format, args))
        {
        }

        // Ensure Exception is Serializable
        protected DatabaseException(SerializationInfo info, StreamingContext ctxt)
            : base(info, ctxt)
        {
        }
    }
}

SelectList

فقط برای (Asp (Mvc  است اما برای پرکردن combo box های View بسیار مفید است.این تولید کننده کد ، <List<SelectListItem را با تمام داده های VEREIN  پر کرده و آن را به ComboBox  پاس میدهد.

using System;
using System.Collections.Generic;
using System.Linq;
using TestProject.Models;
using System.Web.Mvc;

/// <summary>
/// Code generated 01.07.2017 15:44:16 by EFClassGenerator version 1.0.0.0
/// Template last modified 2017-06-23
/// </summary>

namespace TestProject.EF
{
    class SelList_Verein
    {
        private const string exceptionMessage = "A database exception occurred";

        /// <summary>
        /// Returns a SelectListItem list of model objects out of database
        /// </summary>
        /// <returns> A list of SelectListItem - List of model object</returns>
        public static List<SelectListItem> GetList()
        {
            try
            {
                List<SelectListItem> sellist = new List<SelectListItem>();
                using (EFDataClassGeneratorEntities model = new EFDataClassGeneratorEntities())
                {
                    var list = model.VEREIN.OrderBy(w => w.VEREIN_NAME).ToList();
                    foreach (VEREIN item in list)
                    {
                        sellist.Add(new SelectListItem { Value = item.VEREIN_ID.ToString(), Text = item.VEREIN_NAME });
                    }
                    return sellist;
                }
            }
            catch (Exception ex)
            {
                throw new DatabaseException(exceptionMessage, ex);
            }
        }
    }
}

آموزش سی شارپ

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

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

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

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

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