اگر تا حالا با پورتال سورس باز دات نت نیوک 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 انجام دهید .
خیلی متشکر EF رو ادامه بدید.