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

برنامه نویس دات نت و 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  انجام دهید . 

  
 
  

کارمند کارآفرین و شرکتهای کارمندی !

حتما این عنوان برای شما عجیب باشد . اما باید عرض کنم که این نوشته فقط بر اساس تجربیات شخصی من است و شاید از نظر علمی درست نباشد .

همه ما با واژه کارآفرینی مواجه شده ایم ، مفهوم‌ و ایدة‌ کارآفرینی‌، مفهومی‌ جدید و متعلق‌ به‌ عصر حاضر نمی‌باشد. این‌ مفهوم‌ از قبل‌ از قرون‌ وسطی‌ مطرح‌ بوده‌که‌ در طول‌ زمان‌ دچار تحولاتی‌ نیز شده‌ است‌. به‌ طور خلاصه‌، کارآفرین‌ سازمان‌ دهنده‌ و فعال‌ کننده‌ یک‌ واحد اقتصادی‌ (یاغیر اقتصادی‌) و کسب‌ و کار به‌ منظور دستیابی‌ به‌ سود (دستاوردهای‌) شخصی‌ (یا اجتماعی‌) است‌.

حال این سوال مطرح می شود که آیا کارآفرین لزوما صاحب همان کسب و کار است . آنچه که ما در مفهوم عامه می شنویم ، کارآفرین فقط افراد، دارای شرکت و شاید یک کسب و کار مستقل هستند ، اما زمانی که صاحبان این کسب و کارها ، به فکر توسعه کار خود می پردازند ، از یک نکته غافل می شوند ، یعنی در فرآیند استخدام کارکنان خود شاید (البته نظر شخصی من ) دچار این اشتباه شوند که افرادی را استخدام می کنند که صرفا ادامه دهنده مسیر هستند . در حالیکه برای رشد و تعالی مسیر کسب و کار یک کارآفرین، باید کارمندانی استخدام کرد، که کارآفرین باشند ، حال این کارمندان چه خصوصیاتی باید داشته باشند .

1-کارمند کارآفرین در واقع کارمندی است ، که سازمان محل کار را متعلق به خود می داند و برای ایجاد ارزش افزوده در سازمان تلاش می کند

2-دارای خلاقیت است و از انجام کارهای تکراری متنفر است ، اگر قرار است کارمندی را برای امور عادی استخدام کنید بهتر است یک کارمند معمولی استخدام کنید ، اما اگر می خواهید در بخش تولید و یا توسعه و غیره که به ارزش افزوده سازمان مرتبط است فردی را استخدام کنید بهتر است کارمند کارآفرین استخدام کنید .

3-از نوآوری نمی ترسد ، کارمند کارآفرین همواره به دنبال کسب تجربه های جدید و یادگیری نوآرویهای جدید است ، سعی می کند همیشه خود را به روز کند .

4-نیازی به هل دادن ندارد ، کارمند کارآفرین فقط کافیست اهداف را برایش مشخص کنید ، او بقیه راه را بلد است و تا آخرش خواهد رفت .

5-قابل اعتماد است !، خیلی مهم است مخصوصا در فضای سنتی جامعه ما ، به نظر من برای اینکه این کارمند مفید باشد باید به او اعتماد کنید .

6-از ابزارهای کنترلی شدید ، بیزار است ، این نوع کارمندان از اینکه همانند دیگر کارمندان شدیدا تحت کنترل باشند به شدت بیزار هستند و می خوهند کمی آزادی عمل داشته باشند . حتما به این نکته توجه کنید .

7-اهل زیر آب زدن نیستند ، این نوع کارمندان به اهداف خود فکر می کنند ، و حوصله زیر آب زنی و خراب کاری ندارن ، اما بنا بر شواهدی دارای اخلاق خاص هم هستند ،

8-برای رسیدن به درآمد بالا فکر می کنند ، اما نه بر اساس اضافه کاری و ساعت و ... بلکه بر اساس کارهای خوب و قابل لمس و واقعی

9-نسبت به سلسه مراتب سازمانی هم حساسیت دارند مثلا برای ارتباط با بالاترین فرد سازمان نباید دچار محدودیت شوند .

10-امکانات می خواهند ، برای انجام کارهای خود نیاز به بسترها و امکانات دارند ، باید فراهم شود در غیر اینصورت ، کارآفرین نخواهند بود و صرفا کارمند معمولی خواهند شد.

11-از گفتن جمله بلد نیستم نمی ترسند !!! بله درست خواندید این افراد ادعای بلد بودن همه چیز را ندارند ، بلکه اگر چیزی را بلد نیستند خیلی راحت اعتراف می کنند که در شرایط فعلی بلد نیستند اما اگر به آنها زمان بدهیم به بهترین شکل ممکن پاسخ را پیدا می کنند .

12-محتکر نیستند ، این افراد چون همیشه در حال رشد هستند از یاد دادن به دیگران و پاسخ دادن و اشتراک گزاری تجربه های خود هراسی ندارند ، اما از سو استفاده کردن دیگران بیزارند .

13-در محیط کار فقط به کار فکر می کنند ، پس مواظب باشید آنها را از محیط کارمندان وقت تلف کن جدا کنید چون کارایی آنها را تحت تاثیر قرار می دهد

 

خوب اگر شما صاحب کسب و کار هستید و به دنبال توسعه و پیشرفت هستید ، باید به دنبال چنین کارمندی باشید ، اما فراموش نکنید که تعامل با چنین افرادی هم مشکل است ، اما محال هم نیست ، اما اگر کار شما روتین تکراری باشد هرگز چنین افرادی را استخدام نکنید چون ، بعد از مدتی خواهند رفت .

 

اما شرکتهای کارمندی !

شاید عجیب باشد اما یک واقعیت است ، اگر شما شرکتی هستید که درآمد شما وابسته به سازمانی دیگر باشد که در صورت نبودن آن سازمان ، شما هم متضرر می شوید پس ، شما همان شرکت کارمندی هستید ، نه شرکت کارآفرین ، چرا که شرکتی کارآفرین است که بتواند با محصولات مختلف ، در بازارهای مختلفی مانور بدهد و در صورت از دست دادن یکی از منابع درآمد ضرر زیادی نمی بیند ، در واقع شرکت کارآفرین برای منابع درآمد خود یک سبد محصولات و یا سبد درآمدی ایجاد می کند که در صورت از بین رفتن یکی و یا بعضی از این منابع از بین نمی رود .

 

 

سطح دسترسی Access Modifiers

ما در زبان سی شارپ بطور کلی دارای چهار سطح دسترسی بصورت زیر هستیم .

1-private  : دسترسی اختصاصی میباشد. در این حالت عضو مورد نظر از بیرون کلاس قابل مشاهده و دسترسی نخواهد بود و فقط در داخل کلاسی که تعریف میشود قابل دسترسی خواهد بود.

2-public  : دسترسی عام میباشد. عضوی که از نوع public است از بیرون کلاسی که در آن تعریف شده است ، توسط دیگر کلاسها کاملا قابل دسترسی و ویرایش خواهد بود.

3-internal  : تنها در داخل فایل یا اسمبلی فعلی قابل استفاده خواهند بود

4-protected  : تنها در کلاسی که تعریف در آن تعریف شده و کلاسهایی که از آن کلاس مشتق میشوند قابل دسترسی خواهد بود.

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

 

 

                           

 به شکل اول تصویرنگاه کنید همانطور که می بینید دایره سبز رنگ نشان دهنده سطح دسترسی متغیر public  است. می بینیم که این سطح دسترسی هم در خارج از کلاس و هم د ر خارج از پروژه ما قابل دسترسی است .

دایره های کوچک قرمز رنگ ، نشان دهنده متغیرها و فیلدهایی است با سطح دسترسی private  است همانطور که از شکل پیداست این متغیرها فقط در همان محدوه که تعریف شده اند . قابل دستیابی هستند .

دایره آبی رنگ نشان دهنده سطح دسترسی internal  است . یعنی کلاس یا متغیری از این نوع فقط در سطح همان پروژه قابل دسترسی است و اگر ما فرضا پروژه 2 را ایجاد کنیم و بخواهیم از کلاس با سطح دسترسی internal  در پروژه 2 استفاده کنیم ممکن نیست .

و سرانجام شکلهای نامنتظم قهوه ای رنگ را می بینید که نشان دهنده سطح دسترسی protected  است .

سطح دسترسی دیگری نیز وجود دارد تحت عنوان protected internal  این سطح دسترسی در همان پروژه تعریف شده قابل دسترسی است و علاوه بر آن  اگر کلاسی از پروژه دیگر از آن ارث بری کند نیز قابل دسترسی است .

در واقع برابر با internal +protected  است . از اجتماع این دو در شکل بالا می توانید آن را مشاهده کنید قهوه ای به اضافه رنگ آبی .

 

برای دانلود اصل مطلب بدلیل ضعف ویرایشگر وبلاگ علاقه مندان می توانند  بصورت فایل دانلود کنند