Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 304

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 298 299 300 301 302 303 < 304 > 305 306 307 308 309 310 .. 404 >> Следующая


' III <summary>

III Дата заключения контракта с автором III </sumnary>

[DatabaseColumn('HIRIUDATE',ColumnDomain.DateTime,NUllable=true)] public DateTime Hirepate (

get ( return (DateTime) this[*HIRE_PATE* ]; 1 set ( this['HIRE_t)ATE*J = values )

)

}

В данном случае мы создали подкласс класса GenericRow и добавили в него свойства AuthoriD и HireDate. Обратите внимание на порядковый номер, выбранный для столбца Author_iD. Он выбирается таким образом, чтобы этот столбец выводился первым для данной таблицы. У свойства HireDate такой порядковый номер отсутствует, поэтому соответствующее значение генерируется с помощью
Атрибуты

649

атрибута, а все сгенерированные таким образом значения превосходят 100, по этой причине столбцы таблицы будут представлены п следующей последовательности:

AUTHOR_ID, NAME, DESCRIPTION И, НЭКОНеЦ, HIRE_DATE.

Класс BookRow также является производным от класса GenericRow, поэтому в него включены свойства для названия н описания. В нем определяются новые свойства ваокю, PublishDate и isbn:

// Извлечение из файла DatabaseAttribute3.es III оишпагу»

/// Таблица, в которой будут храниться книги III </summary>

" С DatsbaseTable('BOOK')]

public class BookRow ; GenericRow {

public BookRow (DataRowBuilder builder) i base (builder)

(

)

Ut oumnory>

/// Столбец с основным ключом /// </вшилаry>

[DatabaseColumn< 'BOOI(_ID',CoIujnnDomain.Long,Order"l>) public long BookID С

get ( return (long) thia[*BOOK_ID*1i ) set ( this['BOOK_ID'] - value; )

J

/// <вшптагу>

III Автор, написавзий даннув книгу /// </aumnary>

(DatabaseColumn ('AtfTHOR_ID' „ ColumnDoaiain, bong, Order»!) 1 public long AuchorlD {

get ( return (long) this['AUTHOR_ID'] i 1 set ( this ['AUTHORED'J * value; )

) .

/II <ашнпаху>

Ш Дата публикации книги III </вилтоагу>

{DatabeseColunin('PUBLISHED ATE',ColumnDcmain.DateTime,Nullable«true)] public DateTime PublishDate ( - , get ( return (DateTime ) thia[*PUBLISK_DATE*]; ) set ( this['PUBLISH_DATE•] = value; )

)

III <аиштагу>

/// ISBN для данной книги III <1 auimary>

[DatabaseColumn('ISBN',ColumnDomain.String,Nullable-true,Siге=10)] public string ISBN (

get [ return (string) thist'ISBN'J; ) set ( thia[*lSBN'J = value; )

)
650

Глава 22

Создание SQL

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

Приведенный ниже класс вызывает метод OutputTabie для всех типов, для которых мы хотим создать таблицу базы данных: public class DatabaseTest

<

public static void Main() t

OutputTabie (typeof (AuthorRow));

OutputTabie (typeof (BookHow))j ) .

public static void OutputTabie (Systea Гуре t)

{

// Code in full below

)

Мы бы могли использовать отражение, чтобы пройти в цикле по каждому классу в этом множестве, проверяя, не выведен ли этот класс из GenericRow, н автоматически выводя классы. Для простоты мы внесли в код имя таблиц, которые должны быть сгенерированы: AuthorRow и BookRow.

Реализация метода OutputTabie О представлена ниже:

// Извлечение из файла Database At tributes, се III <ашппагу>

/// Создание SQL по типу SQL Server для переданного параметра III </вишшагу>

III <param пап ^'“t" х/pur <«n>

public Btatic void OutputTabie (System.Type t)

( (

// КзБяечени атрибута DatabaseTabie из описают типа object!] tableAttributee = t.GetCuetojnAttributes

(typeof (DatabaseTableAttribute) , true) ;

If Проверка его существования... if (tableAttributee.Length 1)

(

// Вывод SQL в случае удачного заверяет проверки Console.WriteLine ('CREATE TABLE {01* ,

((DatabaseTableAttribute)tableAttributee[0]).TableName); Console.WriteLine (*(')j .

SortedList columns * пен SortedList 0;

/ / Проход no всем свойствам

f breach (Property Inf о prop in t. QetFroperties (})

(

// Получение всех описанных атрибутов DatabaeeColumnAttribute object [] columnAttributes “ prop.GetCuatomAttributes

(typeof (DatabaBeColucinAttribute) , true);

// Если есть DatabaeeColumnAt tribute, if (columnAttributes.Length -- 1)

(

DatabaaeColumnAttributi 3ca = columnAttributes[0]

, as DatabaseColumnAttribute ;
Атрибуты_______________________________________________________________________________________65 i

//то выполняется преобразование ColumnDomain

// в тип данных SQL Server

string dataType “ ConvertDataType (dca);

/ / Затем этот SQL-столбец включается в отсортировали^'

// список — это сделано, чтобы столбцы выводились //в порядке возрастания их порядковых номеров

columns.Add (dca.Order, string.Format ( * (0,-31}{1,-20)(2,8),' , dca. Co lumnName , datatype ,

dca.Nullable 7 'HULL* : 'HOT HULL1)) s

)

. )

// Теперь в цикле просматривается столбцы SortedList

Coreach (DictionaryEntry e in columns)
Предыдущая << 1 .. 298 299 300 301 302 303 < 304 > 305 306 307 308 309 310 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.