Надоело мне руками строить бизнес-классы, пришлось освоить MyGeneration и написать скрипт, который анализирует выбранные таблицы, вьюхи, связи и генерирует классы с DataAccessor'ами.
Вот так выглядит интерфейсная часть скрипта —
На выходе получаем набор файлов вроде этого —
// Auto-generated by MyGeneration using BLToolkit mapping templateusing 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 вместе с хранимыми процедурами и юнит тестами.
Здравствуйте, Andy77, Вы писали:
A>Надоело мне руками строить бизнес-классы, пришлось освоить MyGeneration и написать скрипт, который анализирует выбранные таблицы, вьюхи, связи и генерирует классы с DataAccessor'ами.
А как подключить MyGeneration к Ораклу? У меня пока что получатся только
Здравствуйте, Блудов Павел, Вы писали:
БП>Здравствуйте, Andy77, Вы писали:
A>>Надоело мне руками строить бизнес-классы, пришлось освоить MyGeneration и написать скрипт, который анализирует выбранные таблицы, вьюхи, связи и генерирует классы с DataAccessor'ами.
БП>А как подключить MyGeneration к Ораклу? У меня пока что получатся только БП>
Здравствуйте, Yachtsman, Вы писали:
Y>Туплю слегка... Y>OracleDataAccessor при доступе к MSSQL на что менять?
Меняй на DataAccessor. Это не ты тупишь, а я ступИл, OracleDataAccessor — это специфичный для моего проекта DataAccessor, нужно было мне выкладывать, конечно, версию с DataAccessor.
К сожалению, развивать этот скрипт и идею генерации BLT DAL с помощью MyGeneration я пока что не буду — мы решили использовать NHibernate.
Re: MyGeneration: Генерация blt-классов по схеме БД и метада
Здравствуйте, Andy77, Вы писали:
A>Надоело мне руками строить бизнес-классы, пришлось освоить MyGeneration и написать скрипт, который анализирует выбранные таблицы, вьюхи, связи и генерирует классы с DataAccessor'ами.
А можно для дураков — как это юзать? Я что-то не понял.
С уважением, Анатолий Попов.
ICQ: 995-908
Re[2]: MyGeneration: Генерация blt-классов по схеме БД и мет
Здравствуйте, Aen Sidhe, Вы писали:
AS>А можно для дураков — как это юзать? Я что-то не понял.
Устанавливаешь MyGeneration (это инструмент, предназначенный для удобной генерации текстов), настраиваешь доступ к БД, скачиваешь мой скрипт, запускаешь его в MyGeneration, указываешь скрипту, для каких таблиц и вьюх нужно сгенерировать BLT-классы. Вроде бы всё
Re[3]: MyGeneration: Генерация blt-классов по схеме БД и мет
Здравствуйте, Andy77, Вы писали:
A>Здравствуйте, Aen Sidhe, Вы писали:
AS>>А можно для дураков — как это юзать? Я что-то не понял.
A>Устанавливаешь MyGeneration (это инструмент, предназначенный для удобной генерации текстов), настраиваешь доступ к БД, скачиваешь мой скрипт, запускаешь его в MyGeneration, указываешь скрипту, для каких таблиц и вьюх нужно сгенерировать BLT-классы. Вроде бы всё
Пасибо. Загвоздка была в том, что я думал, что MyGeneration — название скрипта