• Microsoft .NET
  • ASP.NET
  • Руководство по Catharsis - часть 3: быстрая разработка приложений

Руководство по 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 элемент меню Клиент будет работать.



Разумеется, в базе данных еще нет клиентов, поэтому придется их добавить. Следующий шаг – увеличение функциональных возможностей кнопки ‘Новый’, позволяющее добавлять новых клиентов.