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