Руководство по Catharsis - часть 3: быстрая разработка приложений - Назначение таблицы базы данных объекту
ОГЛАВЛЕНИЕ
Назначение таблицы базы данных объекту
Назначаемая таблица выглядит так:
Откройте файл NHibernate, автоматически созданный для этого объекта.
Firm.SmartControls.Data.Insurance.Client.hbm.xml
Данные, указанные вами во время создания объекта, уже добавлены:
<?xml version='1.0' encoding='utf-8' ?>
<hibernate-mapping xmlns='urn:nhibernate-mapping-2.2'
namespace='Firm.SmartControls.Entity.Insurance' assembly='Firm.SmartControls.Entity'>
<class name='Client' table='Client' lazy='true' >
<id name='ID' column='ClientId' >
<generator class='native'></generator>
</id>
<property not-null='true' name='Code' />
<property not-null='true' name='Name' />
<property not-null='true' name='BankCode' />
</class>
</hibernate-mapping>
Нужно изменить следующие разделы:
Имя таблицы – InsuranceClient (клиент страхования), а не клиент.
Столбец идентификатора - InsuranceClientId, а не идентификатор клиента.
CountryId (идентификатор страны) и GenderId (идентификатор пола) – списки кодов, требующие установления соответствий многие к одному.
Ниже приводится законченный вариант:
<?xml version='1.0' encoding='utf-8' ?>
<hibernate-mapping xmlns='urn:nhibernate-mapping-2.2'
namespace='Firm.SmartControls.Entity.Insurance' assembly='Firm.SmartControls.Entity'>
<class name='Client' table='InsuranceClient' lazy='true' >
<id name='ID' column='InsuranceClientId' >
<generator class='native'></generator>
</id>
<property not-null='true' name='Code' />
<property not-null='true' name='Name' />
<property not-null='true' name='BankCode' />
<many-to-one name='Country' column='CountryId' lazy='false' ></many-to-one>
<many-to-one name='Gender' column='GenderId' lazy='false' ></many-to-one>
</class>
</hibernate-mapping>
Можно увидеть ссылку на Firm.SmartControls.Entity.Insurance в вышеуказанном файле, поэтому ее нужно будет изменить с целью отражения изменений, сделанных в файле соответствий. DAO (объект доступа к данным) также нужно будет изменить, но перед этим необходимо добавить в файл объекта свойства, которые не были автоматически созданы руководством.
Откройте файл объекта Клиент:
Имеются три свойства – Code (код), Name (имя) и BankCode (код банка). Будут добавлены Gender (пол) и Country (страна). Это объекты списка кодов, поэтому нужно добавить директиву using (использование) для Firm.SmartControls.Entity.CodeLists, чтобы типы данных Gender и Country были распознаны. Код, который нужно добавить, написан полужирным шрифтом.
using System; // ===================================
using System.Collections.Generic; // Код, созданный Руководством © Catharsis
using System.Linq; // ===================================
using ProjectBase.Core;
using ProjectBase.Core.PersistentObjects;
using ProjectBase.Core.Collections;
using Firm.SmartControls.Entity.CodeLists;
namespace Firm.SmartControls.Entity.Insurance
{
/// <summary>
/// Объект Клиент.
/// </summary>
[Serializable]
public class Client : Persistent
{
public virtual string Code { get; set; }
public virtual string Name { get; set; }
public virtual string BankCode { get; set; }
/// <summary>
/// список кодов
/// </summary>
public virtual Gender Gender { get; set; }
/// <summary>
/// список кодов
/// </summary>
public virtual Country Country { get; set; }
Теперь эти дополнительные поля добавляются в DAO
(Firm.SmartControls.Data.Insurance.ClientDao)
Только что добавленные Gender и Country должны быть доступны в «интеллектуальном восприятии» после добавления двух новых элементов, так как они теперь являются свойствами объекта Client (клиент).
Выполнение приложения с новым объектом
После выполнения необходимых изменений в файле NHibernate, объекта и Dao элемент меню Клиент будет работать.
Разумеется, в базе данных еще нет клиентов, поэтому придется их добавить. Следующий шаг – увеличение функциональных возможностей кнопки ‘Новый’, позволяющее добавлять новых клиентов.