создание пакета dotnetnuke с простой в установке базой данных sql - PullRequest
4 голосов
/ 30 апреля 2011

Я новичок в dotnetnuke и asp.net в целом.Мне нужно создать пакет модуля, который легко установить на другом сайте DNN.Проблема заключается в том, что таблицы SQL и другие объекты базы данных необходимо добавлять вручную.Я хотел бы, чтобы они добавлялись автоматически при развертывании пакета.Как я уже сказал, я новичок во всем этом, и пошаговое объяснение было бы очень полезно.

Спасибо,

Елена

Ответы [ 2 ]

4 голосов
/ 06 мая 2011

Хорошо, я прошел через это и хотел бы поделиться с теми, кто, возможно, все еще борется.После создания пакета вам необходимо распаковать его и отредактировать некоторые файлы.Посмотрите на файл .dnn в вашем пакете.Там, как указал Хэмлин, вам нужно добавить сценарии (не файлы), которые будут выполнять сценарии SQL и создавать таблицы, хранимые процедуры и другие объекты базы данных.Вот часть кода, которую я добавил в файл dnn.Он добавляется в тег компонентов.

  <components>
     <component type="Script">
         <scripts> 
            <basePath>DesktopModules\UserComments</basePath>
            <script type="Install">
            <name>05.02.05.SqlDataProvider</name> 
            <version>05.02.05</version>
            </script>

             <script type="uninstall"> 
            <name>uninstall.sqldataprovider</name> 
            <version>05.02.05</version>     
            </script>
         </scripts>
     </component>
        <component type="Module"> 

Там вам нужно указать пути, типы файлов, имена файлов и версии.Затем вам нужно создать файлы поставщика данных, которые вы указали в манифесте.Я использовал {databaseOwner} и {objectQualifier}, чтобы убедиться, что новые объекты базы данных соответствуют серверу, на котором они будут установлены.Они чувствительны к регистру, поэтому будьте осторожны, иначе вы будете получать ошибки.Вот как выглядят мои файлы поставщика данных:

05.02.05.sqldataprovider

ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE {databaseOwner}{objectQualifier}usercomments(
    [moduleid] [int] NULL,
    [comment] [text] NULL,
    [date] [datetime] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

create procedure {databaseOwner}sp_viewcomments 
@moduleid int
AS
BEGIN
SET NOCOUNT ON 
    SELECT moduleid, comment, date from {objectQualifier}usercomments where   moduleid=@moduleid
end
go

create PROCEDURE {databaseOwner}sp_usercommentsinsert 
@moduleid int,
@comment text,
@commentdate datetime
AS
BEGIN
SET NOCOUNT ON;
    insert into {databaseOwner}{objectQualifier}usercomments (moduleid, comment, date) values (@moduleid, @comment, @commentdate)  
END
go

create PROCEDURE {databasOwner}sp_countcomments
@moduleid int
As
begin
    SELECT count(*) from {databaseOwner}{objectQualifier}usercomments where moduleid=@moduleid
end
go

uninstall.sqldataprovider

DROP TABLE      {databaseOwner}{objectQualifier}usercomments 
GO

drop procedure {databaseOwner}sp_usercommentsinsert  
GO

drop procedure {databaseOwner}sp_viewcomments 
GO

drop procedure {databaseOwner}sp_countcomments 
go

Убедитесь, что соединения sqlconnect подходят дляновый сайт и внесите изменения, если необходимо, в те файлы, которые содержат соединения (в моем случае они были в vb ascx.vb и ascx fle).Я использовал этот код, чтобы извлечь информацию из файла web.config и сделать подключение подходящим для любого сайта.

vb файл:

 Dim cn As New SqlConnection(ConfigurationManager.ConnectionStrings("sitesqlserver").ConnectionString) 

ascx файл:

ConnectionString="<%$ ConnectionStrings:SiteSqlServer %>"  

Затем упакуйте все файлы, включая новые файлы поставщика данных, в zip-файл, и вы должныидти.

4 голосов
/ 30 апреля 2011

Это обрабатывается файлами SqlDataProvider.

Обратите внимание, что когда вы создаете проект скомпилированного модуля DotNetNuke в VS2010 (или VS2008), у вас получается три таких файла, два из которых вызывают у вас интерес (Я думаю)

  • 01.00.00.SqlDataProvider выполняется при установке модуля
  • Uninstall.SqlDataProvider запускается при удалении

Примечание в файле манифеста DNNесть записи, указывающие на эти файлы SqqDataProvider:

    <file>
      <name>01.00.00.SqlDataProvider</name>
    </file>
    <file>
      <name>Uninstall.SqlDataProvider</name>
    </file>

Также обратите внимание, что в файле манифеста номер версии соответствует префиксу в файле SQL установщика:

<version>01.00.00</version>

Наконец, вы упакуете свой модуль DNN в файл .zip.Точная структура уклоняется от меня, но DNNCreative и книга, упомянутая ниже, содержат много информации.

После того, как вы получите развертываемый файл .zip, вы устанавливаете его так же, как и любой другой модуль, который вы можете купить у SnowCovered.

Я предлагаю сделать следующее

  • Посмотрите недавние обучающие видеоролики о разработке пользовательских модулей DNNCreative.Они объясняют этот процесс очень подробно.
  • Прочитайте книгу Митчела Продавца: http://www.amazon.com/Professional-DotNetNuke-Programming-Mitchel-Sellers/dp/0470171162 - Здесь объясняются все забавные настройки скриптов / манифеста SQL для поддержки нескольких версий вашего модуля

Я использовал оба ресурса и нашел их очень полезными

...