MyGeneration: Генерация blt-классов по схеме БД и метаданным
От: Andy77 Ниоткуда  
Дата: 24.08.06 20:16
Оценка: 98 (5)
#Имя: FAQ.rfd.MyGeneration
Надоело мне руками строить бизнес-классы, пришлось освоить MyGeneration и написать скрипт, который анализирует выбранные таблицы, вьюхи, связи и генерирует классы с DataAccessor'ами.

Вот так выглядит интерфейсная часть скрипта —



На выходе получаем набор файлов вроде этого —

// Auto-generated by MyGeneration using BLToolkit mapping template
using System;
using System.Collections.Generic;
using BLToolkit.Data;
using BLToolkit.DataAccess;
using BLToolkit.Mapping;

namespace PlateBltDemo
{
   [TableName("HIG.CAMPUS")]
   public class Campus
   {
      [PrimaryKey,
       MapField("ID")]             public int       Id;
      [MapField("CODE")]           public string    Code;
      [MapField("NAME")]           public string    Name;
      [MapField("COMPANY_ID")]     public int?      CompanyId;
      [MapField("COMMENTS")]       public string    Comments;
      [MapField("SOURCE")]         public string    Source;
      [MapField("SOURCE_CD")]      public string    SourceCd;
      [MapField("IUD_FLAG")]       public string    IudFlag;
      [MapField("DATE_CREATED")]   public DateTime? DateCreated;
      [MapField("DATE_MODIFIED")]  public DateTime? DateModified;
      [MapField("USER_CREATED")]   public string    UserCreated;
      [MapField("USER_MODIFIED")]  public string    UserModified;

      public Company GetCompany(DbManager db)
      {
         return DataAccessor.CreateInstance<CompanyAccessor>(db).SelectByKey(CompanyId);
      }
   }

   public abstract class CampusAccessor : OracleDataAccessor<Campus>
   {
      [SqlQuery("select * from HIG.CAMPUS where ID=:id")]
      public abstract List<Campus> GetByIdSql(int id);

      [SqlQuery("select * from HIG.CAMPUS where COMPANY_ID=:companyId")]
      public abstract List<Campus> GetByCompanyIdSql(int? companyId);
   }
}


Также можно помечать таблицы/поля в MyGeneration атрибутами, влияющими на кодогенерацию (например — можно задавать имя Оракловской последовательности, из которой берется следующий Id). Или же можно помечать справочники атрибутом, указывающим, что данную таблицу нужно загружать один раз при первом обращении и впоследствии искать в памяти. В планах — расширить систему таким образом, чтобы на основании метаданных и схемы скрипт полностью генерировал DAL вместе с хранимыми процедурами и юнит тестами.

Сам скрипт находится здесь
Re: MyGeneration: Генерация blt-классов по схеме БД и метада
От: IT Россия linq2db.com
Дата: 24.08.06 23:37
Оценка:
Здравствуйте, Andy77, Вы писали:

A>Сам скрипт находится здесь


Может его в проект положить или хотя ссылку на него дать?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re: MyGeneration: Генерация blt-классов по схеме БД и метада
От: Блудов Павел Россия  
Дата: 25.08.06 02:10
Оценка:
Здравствуйте, Andy77, Вы писали:

A>Надоело мне руками строить бизнес-классы, пришлось освоить MyGeneration и написать скрипт, который анализирует выбранные таблицы, вьюхи, связи и генерирует классы с DataAccessor'ами.


А как подключить MyGeneration к Ораклу? У меня пока что получатся только

[System.InvalidOperationException] — Џ®бв ўйЁЄ 'OraOLEDB.Oracle.1' ­Ґ § аҐЈЁбваЁа®ў ­ ­  «®Є «м­®¬ Є®¬ЇмовҐаҐ.


К SqlServer'у подключается, но стрелается на каждом шагу. Может нужно версию под .net 1.0?
... << RSDN@Home 1.2.0 alpha rev. 642>>
Re[2]: MyGeneration: Генерация blt-классов по схеме БД и мет
От: Andy77 Ниоткуда  
Дата: 25.08.06 02:45
Оценка:
Здравствуйте, IT, Вы писали:

IT>Может его в проект положить или хотя ссылку на него дать?


Да Ради Бога
Re[2]: MyGeneration: Генерация blt-классов по схеме БД и мет
От: Andy77 Ниоткуда  
Дата: 25.08.06 02:49
Оценка:
Здравствуйте, Блудов Павел, Вы писали:

БП>Здравствуйте, Andy77, Вы писали:


A>>Надоело мне руками строить бизнес-классы, пришлось освоить MyGeneration и написать скрипт, который анализирует выбранные таблицы, вьюхи, связи и генерирует классы с DataAccessor'ами.


БП>А как подключить MyGeneration к Ораклу? У меня пока что получатся только

БП>

[System.InvalidOperationException] — Џ®бв ўйЁЄ 'OraOLEDB.Oracle.1' ­Ґ § ॣЁбваЁа®ў ­ ­ «®Є «м­®¬ Є®¬ЇмовҐаҐ.


У тебя OLEDB установлен?

БП>К SqlServer'у подключается, но стрелается на каждом шагу. Может нужно версию под .net 1.0?


Не знаю, у меня работает нормально, правда, я только к Ораклу подключался. Версия у меня, насколько помню, под .Net 1.1 (или 1.0? не уверен)
Re: MyGeneration: Генерация blt-классов по схеме БД и метада
От: Yachtsman Россия  
Дата: 27.09.06 09:23
Оценка:
Туплю слегка...
OracleDataAccessor при доступе к MSSQL на что менять?
... << RSDN@Home 1.2.0 alpha rev. 655>>
Все, что ни делается — делается к лучшему!
Re[2]: MyGeneration: Генерация blt-классов по схеме БД и мет
От: Andy77 Ниоткуда  
Дата: 27.09.06 21:17
Оценка:
Здравствуйте, Yachtsman, Вы писали:

Y>Туплю слегка...

Y>OracleDataAccessor при доступе к MSSQL на что менять?

Меняй на DataAccessor. Это не ты тупишь, а я ступИл, OracleDataAccessor — это специфичный для моего проекта DataAccessor, нужно было мне выкладывать, конечно, версию с DataAccessor.

К сожалению, развивать этот скрипт и идею генерации BLT DAL с помощью MyGeneration я пока что не буду — мы решили использовать NHibernate.
Re: MyGeneration: Генерация blt-классов по схеме БД и метада
От: Aen Sidhe Россия Просто блог
Дата: 05.11.06 07:58
Оценка:
Здравствуйте, Andy77, Вы писали:

A>Надоело мне руками строить бизнес-классы, пришлось освоить MyGeneration и написать скрипт, который анализирует выбранные таблицы, вьюхи, связи и генерирует классы с DataAccessor'ами.


А можно для дураков — как это юзать? Я что-то не понял.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[2]: MyGeneration: Генерация blt-классов по схеме БД и мет
От: Andy77 Ниоткуда  
Дата: 05.11.06 22:59
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

AS>А можно для дураков — как это юзать? Я что-то не понял.


Устанавливаешь MyGeneration (это инструмент, предназначенный для удобной генерации текстов), настраиваешь доступ к БД, скачиваешь мой скрипт, запускаешь его в MyGeneration, указываешь скрипту, для каких таблиц и вьюх нужно сгенерировать BLT-классы. Вроде бы всё
Re[3]: MyGeneration: Генерация blt-классов по схеме БД и мет
От: Aen Sidhe Россия Просто блог
Дата: 06.11.06 07:48
Оценка:
Здравствуйте, Andy77, Вы писали:

A>Здравствуйте, Aen Sidhe, Вы писали:


AS>>А можно для дураков — как это юзать? Я что-то не понял.


A>Устанавливаешь MyGeneration (это инструмент, предназначенный для удобной генерации текстов), настраиваешь доступ к БД, скачиваешь мой скрипт, запускаешь его в MyGeneration, указываешь скрипту, для каких таблиц и вьюх нужно сгенерировать BLT-классы. Вроде бы всё


Пасибо. Загвоздка была в том, что я думал, что MyGeneration — название скрипта
С уважением, Анатолий Попов.
ICQ: 995-908
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.