X
تبلیغات
نماشا
رایتل

انتقال به سایت جدید  و اهداف جدید

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




CREATE PROCEDURE [dbo].[sp_SQLNotify]
   @From varchar(100) ,
   @To varchar(100) ,
   @Subject varchar(100)=" ",
   @Body varchar(4000) = "Motley Fool Inc."
/*********************************************************************

This stored procedure takes the above parameters and sends an e-mail.
All of the mail configurations are hard-coded in the stored procedure.
Comments are added to the stored procedure where necessary.
Reference to the CDOSYS objects are at the following MSDN Web site:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_messaging.asp

***********************************************************************/
   AS
   Declare @iMsg int
   Declare @hr int
   Declare @source varchar(255)
   Declare @description varchar(500)
   Declare @output varchar(1000)

--************* Create the CDO.Message Object ************************
   EXEC @hr = sp_OACreate 'CDO.Message', @iMsg OUT

--***************Configuring the Message Object ******************
-- This is to configure a remote SMTP server.
-- http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/_cdosys_schema_configuration_sendusing.asp
   EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value','2'
-- This is to configure the Server Name or IP address.
-- Replace MailServerName by the name or IP of your SMTP Server.
   EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value', 'نام سرویس دهنده ایمیل'

-- Save the configurations to the message object.
   EXEC @hr = sp_OAMethod @iMsg, 'Configuration.Fields.Update', null

-- Set the e-mail parameters.
   EXEC @hr = sp_OASetProperty @iMsg, 'To', @To
   EXEC @hr = sp_OASetProperty @iMsg, 'From', @From
   EXEC @hr = sp_OASetProperty @iMsg, 'Subject', @Subject

-- If you are using HTML e-mail, use 'HTMLBody' instead of 'TextBody'.
   EXEC @hr = sp_OASetProperty @iMsg, 'TextBody', @Body
   EXEC @hr = sp_OAMethod @iMsg, 'Send', NULL

-- Sample error handling.
   IF @hr <>0
     select @hr
     BEGIN
       EXEC @hr = sp_OAGetErrorInfo NULL, @source OUT, @description OUT
       IF @hr = 0
         BEGIN
           SELECT @output = '  Source: ' + @source
           PRINT  @output
           SELECT @output = '  Description: ' + @description
           PRINT  @output
         END
       ELSE
         BEGIN
           PRINT '  sp_OAGetErrorInfo failed.'
           RETURN
         END
     END

-- Do some error handling after each step if you need to.
-- Clean up the objects created.
   EXEC @hr = sp_OADestroy @iMsg
  
   PRINT 'Mail Sent!'
GO

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