создание пакета dotnetnuke с простой в установке базой данных sql

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

Спасибо,

Елена


person Jelena    schedule 30.04.2011    source источник


Ответы (2)


Это обрабатывается файлами 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 по разработке пользовательских модулей. Они очень подробно объясняют этот процесс.
  • Прочтите книгу продавца Mitchel: https://rads.stackoverflow.com/amzn/click/com/0470171162 - объясняет все забавные настройки скриптов / манифеста SQL для поддержки нескольких версий вашего модуля.

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

person Brian Webster    schedule 30.04.2011
comment
Вышеупомянутое является дополнительным знанием, которое я получил при разработке DNN, но я думаю, что это довольно хорошее резюме процесса. Наши модули зависят от клиента, поэтому мы не используем файлы установщика sql; однако я обязательно воспользуюсь ими при разработке модулей для продажи. - person Brian Webster; 30.04.2011
comment
Спасибо, Хэмлин. я попробую это. Как я уже сказал, я новичок во всем этом, и мой первый проект - это выяснить. Это может быть не так сложно, как казалось. Я дам вам знать, как далеко я продвинулся с этим. - person Jelena; 01.05.2011
comment
Нет проблем - книга Митчела Селлера отлично подходит для пошагового изучения этого вопроса. Он также вносит большой вклад в Stackoverflow. - person Brian Webster; 01.05.2011
comment
Самый простой способ научиться упаковывать модуль - это посмотреть на простой существующий модуль, такой как модуль Links. - person EfficionDave; 03.05.2011
comment
Я согласен с этим, раз уж это современный модуль - некоторые из старых немного странные! - person Brian Webster; 03.05.2011
comment
Джелен, эта информация отличная. Я бы рекомендовал опубликовать его как ответ на вопрос. Это поможет посетителям, вы можете красиво отформатировать его и, вероятно, получите несколько голосов. Спасибо за дополнительную информацию. - person Brian Webster; 06.05.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

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

vb файл:

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

ascx файл:

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

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

person Jelena    schedule 05.05.2011