Волгоградский государственный университет
Опубликован: 02.03.2009 | Доступ: свободный | Студентов: 1514 / 186 | Оценка: 4.20 / 4.03 | Длительность: 16:55:00
Лекция 15:

Разработка модулей для DotNetNuke в Visual Studio 2005

< Лекция 14 || Лекция 15: 123456

Модификация файла DataProvider.vb

Содержимое файла DataProvider.vb следует заменить следующим кодом:

Imports System
Imports DotNetNuke
Imports System.Data
Imports DotNetNuke.Framework

Namespace YourCompany.Modules.GuestBook

  Public MustInherit Class DataProvider
    ' singleton reference to the instantiated object
    Private Shared objProvider As DataProvider = Nothing

    ' constructor
    Shared Sub New()
      CreateProvider()

    End Sub

    ' dynamically create provider
    Private Shared Sub CreateProvider()
      objProvider = CType(Reflection.CreateObject("data", "YourCompany.Modules.GuestBook", ""), DataProvider)
    End Sub

    ' return the provider
    Public Shared Function Instance() As DataProvider
      Return objProvider
    End Function

    Public MustOverride Sub YourCompany_GuestBook_Insert(ByVal ModuleId As Integer, _ 
            ByVal Name As String, ByVal Email As String, ByVal Message As String)
    Public MustOverride Function YourCompany_GuestBook_GetAll(ByVal ModuleId As Integer) As IDataReader
    Public MustOverride Sub YourCompany_GuestBook_Update(ByVal ID As Integer, ByVal Name As String, _ 
            ByVal Email As String, ByVal Message As String, ByVal DateEntered As DateTime)
    Public MustOverride Sub YourCompany_GuestBook_Delete(ByVal ID As Integer)

  End Class

End Namespace

Таким образом, создание уровня доступа к данным завершено. Переходим к уровню бизнес-логики.

Этапы реализации уровня бизнес-логики

Для построения уровня бизнес-логики буду произведены следующие действия:

  • модифицирован файл GuestBookInfo.vb ;
  • модифицирован файл GuestBookController.vb.

Модификация файла GuestBookInfo.vb

В данном файле будет создан класс, предназначенный для хранения данных, диаграмма которого приведена на рис. 15.25.

Диаграмма класса GuestBookInfo

Рис. 15.25. Диаграмма класса GuestBookInfo

Для его реализации замените содержимое файла на следующее:

Imports System
Imports System.Configuration
Imports System.Data

Namespace YourCompany.Modules.GuestBook

  Public Class GuestBookInfo

    Private _ModuleId As Integer
    Private _ID As Integer
    Private _Name As String
    Private _Email As String
    Private _Message As String
    Private _DateEntered As DateTime

    ' initialization

    Public Sub New()
      MyBase.New()
    End Sub

    ' <summary>
    ' Gets and sets the Module Id
    ' </summary>

    Public Property ModuleId() As Integer
      Get
        Return _ModuleId
      End Get
      Set(ByVal value As Integer)
        _ModuleId = value
      End Set
    End Property


    ' <summary>
    ' Gets and sets the Item ID
    ' </summary>
    Public Property ID() As Integer
      Get
        Return _ID
      End Get
      Set(ByVal value As Integer)
        _ID = value
      End Set
    End Property


    ' <summary>
    ' gets and sets the Name
    ' </summary>
    Public Property Name() As String
      Get
        Return _Name
      End Get
      Set(ByVal value As String)
        _Name = value
      End Set
    End Property


    ' <summary>
    ' Gets and sets the Email
    ' </summary>
    Public Property Email() As String
      Get
        Return _Email
      End Get
      Set(ByVal value As String)
        _Email = value
      End Set
    End Property


    ' <summary>
    ' Gets and sets the Message
    ' </summary>
    Public Property Message() As String
      Get
        Return _Message
      End Get
      Set(ByVal value As String)
        _Message = value
      End Set
    End Property


    ' <summary>
    ' Gets and sets the DateEntered
    ' </summary>
    Public Property DateEntered() As DateTime
      Get
        Return _DateEntered
      End Get
      Set(ByVal value As DateTime)
        _DateEntered = value
      End Set
    End Property


  End Class
End Namespace
15.2.

Модификация файла GuestBookController.vb

Содержимое файла следует заменить следующим кодом:

Imports System
Imports System.Collections.Generic
Imports System.Configuration
Imports System.ComponentModel
Imports System.Data
Imports System.Xml
Imports System.Web
Imports DotNetNuke
Imports DotNetNuke.Common
Imports DotNetNuke.Common.Utilities
Imports DotNetNuke.Entities.Modules
Imports DotNetNuke.Services.Search


Namespace YourCompany.Modules.GuestBook

  Public Class GuestBookController

    <DataObjectMethod(DataObjectMethodType.Insert)> _
    Public Shared Sub GuestBook_Insert(ByVal objTest As GuestBookInfo)
      DataProvider.Instance.YourCompany_GuestBook_Insert(objTest.ModuleId, objTest.Name, 
                objTest.Email, objTest.Message)
    End Sub

    <DataObjectMethod(DataObjectMethodType.Delete)> _
    Public Shared Sub GuestBook_Delete(ByVal objTest As GuestBookInfo)
      DataProvider.Instance.YourCompany_GuestBook_Delete(objTest.ID)
    End Sub

    <DataObjectMethod(DataObjectMethodType.Select)> _
    Public Shared Function GuestBook_GetAll(ByVal ModuleId As Integer) As List(Of GuestBookInfo)
      Return CBO.FillCollection(Of GuestBookInfo)(DataProvider.Instance().YourCompany_GuestBook_GetAll(ModuleId))
    End Function

    <DataObjectMethod(DataObjectMethodType.Update)> _
    Public Shared Sub GuestBook_Update(ByVal objTest As GuestBookInfo)
      DataProvider.Instance.YourCompany_GuestBook_Update(objTest.ID, objTest.Name, 
                                                  objTest.Email, objTest.Message, objTest.DateEntered)
    End Sub

  End Class


End Namespace

Этот код создает класс с четырьмя методами (рис. 15.26):

  1. GuestBook_Insert - Добавляет записи в БД. Используется объект GuestBookInfo. Параметры ModuleId, Name, Email, Message передаются методу YourCompany_GuestBook_Insert в файле DataProvider.vb
  2. GuestBook_Delete - Удаляет записи из БД. Используется объект GuestBookInfo. Параметр ID передается методу YourCompany_GuestBook_Delete в файле DataProvider.vb.
  3. GuestBook_GetAll - получает набор записей из БД . Используется параметр ModuleId. Этот метод вызывает метод YourCompany_GuestBook_GetAll в файле DataProvider.vb и возвращает объект GuestBookInfo, заполненный данными .
  4. GuestBook_Update - обновляет БД . Используется объект GuestBookInfo. Метод открывает объект и передает отдельные параметры ( ID, ModuleId, Name, Email, Message, DateEntered ) методу YourCompany_GuestBook_Update в файле DataProvider.vb ".
Класс GuestBookController

Рис. 15.26. Класс GuestBookController
< Лекция 14 || Лекция 15: 123456