My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information
Members
Featured
Downloads

NHProfile - ASP.NET NHibernate Profile Provider

Описание на русском см. ниже.

Quick overview

NHProfile manages storage of profile information for an ASP.NET application using NHibernate.

NHProfile can be useful if you need to store profile information in a data source that is not supported by the profile providers included with the .NET Framework (PostgreSQL, Oracle databases or others).

NHProfile can be used in conjunction with Manuel Abadia's ASP.NET Custom Membership and Role Providers.

Setup and configuration

After downloading NHProfile, you will have to add a reference to the assembly NHibernate.Profile.dll in your project.

It is assumed that NHibernate already configured in your project (see sources for example).

NHibernate version 2.0.1 is currently used.

Also, you will have to register the provider in your web.config file. Add the following XML code somewhere in the <system.web> section:

<profile defaultProvider="NHProfileProvider">
  <providers>
    <clear/>
    <add name="NHProfileProvider" type="NHibernate.Profile.NHProfileProvider, NHibernate.Profile"
         TableName="Profile"
         UserNameColumn="UserName" UserNameType="String" UserNameLength="200"/>
  </providers>
  <properties>
    <add name="TimeZone" type="string" /> <!-- User property example -->
  </properties>
</profile>

This code allows you to configure provider according to your data schema. The following table describes all parameters that can be configured.

AttributeDefault valueDescription
TableNameProfileProfile table name
UserNameColumnUserNameUser nametable column name
UserNameTypeStringNHibernate data type
UserNameLength200max. data string length
PropertyNamesColumnPropertyNamesProfile properties listtable column name
PropertyNamesTypeStringNHibernate data type
PropertyNamesLengthmax. data string length
PropertyValuesStringColumnPropertyValuesStringProfile string valuestable column name
PropertyValuesStringTypeStringNHibernate data type
PropertyValuesStringLengthmax. data string length
PropertyValuesBinaryColumnPropertyValuesBinaryProfile binary valuestable column name
PropertyValuesBinaryTypeBinaryBlobNHibernate data type
PropertyValuesBinaryLengthmax. data string length
LastActivityDateColumnLastActivityDateLast date and time when the profile was read or updatedtable column name
LastActivityDateTypeDateTimeNHibernate data type
LastActivityDateLengthmax. data string length
LastUpdateDateColumnLastUpdateDateLast date and time when the profile was updatedtable column name
LastUpdateDateTypeDateTimeNHibernate data type
LastUpdateDateLengthmax. data string length

The last thing you have to do is to create table in your database. By default provider uses the table with the following schema:

CREATE TABLE [Profile](
  [UserName] [nvarchar](200) NOT NULL,
  [PropertyNames] [ntext] NULL,
  [PropertyValuesString] [ntext] NULL,
  [PropertyValuesBinary] [image] NULL,
  [LastActivityDate] [datetime] NOT NULL,
  [LastUpdateDate] [datetime] NOT NULL,
  CONSTRAINT [PK_Profile] PRIMARY KEY
  (
    [UserName] ASC
  )
)

Now everything is prepared and you can use NHProfile in your project.

Code example

You can use NHProfile in an ASP.NET application in the usual way.

To get the value of a profile property:

object timeZone = HttpContext.Profile.GetPropertyValue("TimeZone");

To set the value of a profile property:

HttpContext.Profile.SetPropertyValue("TimeZone", TimeZone);

Краткое описание

NHProfile реализует хранение пользовательских профилей ASP.NET, используя NHibernate для доступа к данным.

NHProfile может пригодиться, если необходимо хранить профиль пользователя в источнике данных, не поддерживаемом стандартным поставщиком профилей .NET Framework (база данных PostgreSQL, Oracle и другие).

NHProfile может быть испльзован вместе с пользовательскими поставщиками участия и ролей Manuel Abadia.

Подготовка к использованию

После того, как вы скачали NHProfile, в ваш проект необходимо добавить сборку NHibernate.Profile.dll.

Т.к. для работы NHProfile требует NHibernate, далее в описании подразумевается, что все необходимые для него сборки уже добавлены в проект, NHibernate настроен и работает (см. пример в исходных кодах).

В настоящее время используется NHibernate версии 2.0.1

Затем нужно зарегистрировать провайдер в файле web.config. Добавьте приведенный ниже фрагмент xml кода в раздел <system.web>.

<profile defaultProvider="NHProfileProvider">
  <providers>
    <clear/>
    <add name="NHProfileProvider" type="NHibernate.Profile.NHProfileProvider, NHibernate.Profile"
         TableName="Profile"
         UserNameColumn="UserName" UserNameType="String" UserNameLength="200"/>
  </providers>
  <properties>
    <add name="TimeZone" type="string" /> <!-- Пример пользовательского свойства -->
  </properties>
</profile>

Здесь же вы можете настроить провайдер на нужную вам схему данных. В следующей таблице перечислены все параметры, доступные для настройки.

АтрибутЗначение по умолчаниюОписание
TableNameProfileТаблица для хранения профилей
UserNameColumnUserNameИмя пользователянаименование столбца в БД
UserNameTypeStringтип данных NHibernate
UserNameLength200максимальная длина строки данных
PropertyNamesColumnPropertyNamesСписок всех свойств профилянаименование столбца в БД
PropertyNamesTypeStringтип данных NHibernate
PropertyNamesLengthмаксимальная длина строки данных
PropertyValuesStringColumnPropertyValuesStringТекстовые занчения свойств профилянаименование столбца в БД
PropertyValuesStringTypeStringтип данных NHibernate
PropertyValuesStringLengthмаксимальная длина строки данных
PropertyValuesBinaryColumnPropertyValuesBinaryДвоичные занчения свойств профилянаименование столбца в БД
PropertyValuesBinaryTypeBinaryBlobтип данных NHibernate
PropertyValuesBinaryLengthмаксимальная длина строки данных
LastActivityDateColumnLastActivityDateДата последнего обращения к профилюнаименование столбца в БД
LastActivityDateTypeDateTimeтип данных NHibernate
LastActivityDateLengthмаксимальная длина строки данных
LastUpdateDateColumnLastUpdateDateДата последнего изменения профилянаименование столбца в БД
LastUpdateDateTypeDateTimeтип данных NHibernate
LastUpdateDateLengthмаксимальная длина строки данных

Все, что осталось сделать, это создать таблицу в базе данных. По-умолчанию для хранения данных провайдер использует одну таблицу, схема которой представлена ниже.

CREATE TABLE [Profile](
  [UserName] [nvarchar](200) NOT NULL,
  [PropertyNames] [ntext] NULL,
  [PropertyValuesString] [ntext] NULL,
  [PropertyValuesBinary] [image] NULL,
  [LastActivityDate] [datetime] NOT NULL,
  [LastUpdateDate] [datetime] NOT NULL,
  CONSTRAINT [PK_Profile] PRIMARY KEY
  (
    [UserName] ASC
  )
)

Теперь провайдер готов к работе.

Пример использования

В ASP.NET приложении NHProfile используется стандартным образом.

Чтение из профиля:

object timeZone = HttpContext.Profile.GetPropertyValue("TimeZone");

Запись в профиль:

HttpContext.Profile.SetPropertyValue("TimeZone", TimeZone);

Благодарности

NHProfile создан и развивается при поддержке ЗАО «Электронные и компьютерные технологии».