صفحه شخصی سید علا سبزپوش

برنامه نویس دات نت و sql_server --ریاضیات

صفحه شخصی سید علا سبزپوش

برنامه نویس دات نت و sql_server --ریاضیات

Using Entity Framework with DotNetNuke

اگر تا حالا با پورتال سورس باز دات نت نیوک dotnetnuke  کار کرده باشید . حتما متوجه شده اید که ساختار ماژول نویسی آن مبتنی بر سه لایه است .  

 

 

اما آنچه که من می خواهم در این مطلب بیان کنم ، ماژول نویسی بر پایه orm  و بخصوص Entity Framework  است . ما می دانیم یکی از مهمترین محاسن این فریم ورک این است که ما را از شر برخی کد نویسیها بخصوص در لایه دیتا و لایه business  خلاص می کند ، علاوه بر آن دقت تولید کدهای ما نیز بالاتر می شود .

برای اینکار مراحل زیر را دنبال می کنیم . ابتدا پورتال dotnetnuke  را دانلود کنید من در اینجا نسخه 6 این پورتال رانصب کرده ام اکنون پرتال را در کامپایلر vs  باز می کنیم .

اکنون روی پوشه App_Code کلیک راست کنید و گزینه فولدر جدید را انتخاب کنید . 

 

 

 

فولدر ایجاد شده را EFNotes  نام گزاری کنید . 

 

اکنون فولدر DesktopModules   را باز کنید و بر روی آن کلیک راست کنید و فولدر جدیدی به همان نام EFNotes  در آن بسازید . 

 

فایل Web.config  را باز کنید و قسمت compilation را پیدا کنید و در زیر مجموعه codeSubDirectories فولدر جدید ایجاد شده را اعلام کنید مانند تصویر زیر :   

  

 

اکنون پرتال را اجرا کنید و به قسمت با یوزر و پاسورد میزبان وارد شوید ، سپس در قسمت میزبان host  گزینه  SQL  را برای اجرای اسکریپت ایجاد جدول انتخاب کنید و اسکریپت زیر را اجرا کنید تا جدول مورد نظر ساخته  شود . 

 

CREATE TABLE [dbo].[EF_Notes](

    [ID] [int] IDENTITY(1,1) NOT NULL,

    [Date] [datetime] NULL,

    [Message] [nvarchar](500) NULL,

 CONSTRAINT [PK_EF_Notes] PRIMARY KEY CLUSTERED

(

    [ID] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

) ON [PRIMARY

 

پس از ایجاد جدول بالا دوباره به سورس بر می گردیم .در فولدر EFNotes  موجود در بخش APP_Code  کلیک راست می کنیم . 

 

 

 

و گزینه اضافه کردن آیتم جدید یعنی Add New Item  را انتخاب می کنیم . از پنجره باز شده گزینه

ADO.NET Entity Data Model  را انتخاب می کنیم . و کلید Add  را کلیک می کنیم . اکنون در پنجره باز شده Generate from database را انتخاب کنید . و کلید next  را بزنید . در این مرحله باید گزینه SitSqlServer  را انتخاب کنید .

 

  مجددا دکمه next را کلیک کنید و به مرحله بعدی بروید در این مرحله از بخش جدولها ، جدول  EF_Notes  را که قبلا ایجاد کرده ایم را انتخاب کنید . و بر روی دکمه Finish  کلیک کنید .اکنون برروی فایل ایجاد شده دابل کلیک کنید تا مدل خود را مطابق شکل زیر ببینید .  

 

 

 

اکنون مدل داده های ما آماده است . پس به فولدر DesktopModules  بر می گردیم و برروی فولدر EFNotes که ایجاد کرده بودیم کلیک راست می کنیم و گزینه Add New Item  را انتخاب می کنیم

 

 

 

از پنجره ظاهر شده گزینه Web User Control را انتخاب می کنیم نام فایل را view .ascx  می گزاریم مانند شکل زیر :   

 

  

دکمه Add  را کلیک کنید تا فایل مورد نظر ایجاد شود . کد زیر را در فایل جایگزین کنید . 

<%@ Control Language="C#"

AutoEventWireup="true" CodeFile="View.ascx.cs"

Inherits="DotNetNuke.Modules.EFNotes.View"

%> 

اکنون به قسمت سورس سی شارپ فایل بروید و کدهای زیر را جایگزین کنید .   

 

 

 

  اکنون گزینه طراحی Design  را کلیک می کنیم و مانند شکل زیر عمل می کنیم : 

 

 

 

 

سپس گزینه تنظیمات Configure Data Source  را انتخاب می کنیم . شما از گزینه اول  Name Connection  باید نام ارتباطی Ef  که قبلا ایجاد کرده ایم را انتخاب کنید و دکمه next  را کلیک کنید اکنون در این مرحله نام ماهیت یا در واقع نام مدل جدول را انتخاب کنید و سپس فیلدهای مورد نظرتان را از این قسمت انتخاب کنید ما در اینجا گزینه اول را انتخاب می کنیم یعنی تمام فیلدهای جدول را انتخاب کرده ایم و برای ایجاد دستورات حذف و تغییر و اضافه سه گزینه پایین را تیک می زنیم .    

 

 

اکنون یک کنترل Listview    را از جعبه ابزار انتخاب کنید و بر روی فایل قرار دهید . در اینجا شما  

باید منبع داده یعنی DataSource  را همان EntityDataSource  انتخاب کنید . پس گزینه Configure ListView  را انتخاب کنید  گزینه های  

Enable Editing ,inserting,deleting  را انتخاب کنید .

   

 

 

دکمه ok  را کلیلک کنید . اکنون پروژه را ذخیره کنید .

نکته مهم برای استفاده از Entity Framework  در dotnetnuke  شما نیاز به

Entity FrameWork Model Adapter  دارید که باید از لینک زیر آن را دانلود کنید . و سپس فایلهای مرجع زیر را به پروژه اضافه کنید .  

 

 

 

اکنون باید تنظیمات مربوط به مدل ایجاد شده در APP_Code را اعمال کنیم برای اینکار از فولدر APP_Code t فولدر EFNotes باید فایل کد سی شارپ مدل را باز کنید .   

 

 

در قسمت تعریف کلاس مدل جایی که نام کلاس تعریف می شود و پس از آن ارث بری تعریف می شود

global::System.Data.Objects.ObjectContext را حذف کنید و بجای آن عبارت زیر را بنویسید

BrandonHaynes.ModelAdapter.EntityFramework.DotNetNukeObjectContext

 

 

 

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

از host شما باید گزینه extensions و سپس گزینه create new module را انتخاب کنید . 

 

 

 

اکنون ماژول شما آماده است و کافیست تنظیمات آن را در dotnetnuke  انجام دهید . 

  
 
  

مقایسه بین Linq to SQL و Entity Framework

شاید برای شما هم این سوال مطرح شده باشد که Linq To Sql  و Entity Framework  چه تفاوتهایی دارند ، در این تایپیک این دو مورد را از جنبه های مختلفی مقایسه خواهم کرد .

1-complexity  یا پیچیدگی : البته منظور از پیچیدگی از نگاه سخت و آسان بودن نیست بلکه از نگاه امکاناتی که در اختیار شما قرار می دهد . مسلما LINQ  امکانات و پیچیدگیهای کمتری دارد.

2-model    یا مدل سازی : ما در Entity Framework  براحتی می توانیم مدل سازی کنیم علاوه بر آن از تمام ارتباطات بین جدولها پشتیبانی می کند LINQ  از یک ارتباط یک به یک بین کلاسها و جدولهای بانک اطلاعاتی پشتیبانی می کند .

3-پشتیبانی از بانک اطلاعاتی : LINQ to SQL  فقط از بانک اطلاعاتی Sql_Server  پشتیبانی می کند در حالی که Entity Framework  می تواند از بانکهای اطلاعاتی مختلفی پشتیبانی کند .

4-زمان توسعه پذیری :To SQL LINQ   می تواند به راحتی استفاده شود و به سرعت کار شما را پیش ببرد . اما در نرم افزارهای پیچیده و بزرگ بدلیل داشتن امکانات محدود و کم دیگر جوابگو نیست .

5-وراثت : Entity Framework  از وراثت بین کلاسها براحتی استفاده و پشتیبانی می کند در حالی که این خاصیت در LINQ  وجود ندارد .

6-نوع فایل : LINQ  در فایلی با پسوند DBML  ذخیره می شوند در حالی که Entity Framework  در فایلهای EDMX  و CSDL ,SSDL  که با فرمت xml  است ذخیره می شوند .

7-نوع مرکب : ما در  Entity Framework می توانیم فیلدی مرکب complex type  تعریف کنیم . این فیلد چیزی شبیه به ساختار ها است . اما این امکان درTo SQL  LINQ  وجود ندارد

8-کویری : همانطور که در آموزشهای خودم نوشتم . Entity Framework  از چندین سبک برای اجرای کویری استفاده می کند . Linq to Entity , EntitySQL , Query With Method

9-کارایی : هر دو از نظر سرعت در اولین اجرا شاید بتوان گفت کند هستند . اما Eitity Framework از نظر کارایی بهتر عمل می کند .

10-توسعه آینده : مایکروسافت چندان علاقه ای به توسعه و ادامه راه LINQ to SQL  ندارد اما در عوض بیشتر تمرکز و توسعه را بر مبنای تکنولوژیهای دیگری گذاشته است از جمله Entity Framework

11-ساخت بانک اطلاعاتی از مدل : ما فقط در Entity Framework  می توانیم ابتدا مدل خودمان را طراحی کنیم و سپس با استفاده از آن مدل ، بانک اطلاعاتی را تولید کنیم.

جایگاه Entity Framework در معماری 3 لایه

اگر تا به حال با برنامه نویسی سه لایه سرو کار داشتید و با آن برنامه نوشته اید حتما می دانید که این معماری از سه لایه  

  1-    Data access layer 

  2- Business layer  

  3- Presentation layer 

تشکیل شده است سوالی که مطرح می شود این است که جایگاه EDM  در این معماری کدام لایه است شکل زیر تصویری بسیار گویا است که این جایگاه را به خوبی در لایه data  نشان می دهد.