SnapObjects 1.0.x 機能一覧

プロダクトマニュアル

※このページは、2019年5月29日時点のGetting Started with SnapObjects – Features List of SnapObjects 1.0.xを日本語訳したものです。

このドキュメントでは、SnapObjects 1.0.0の新機能を紹介します。

NuGetで提供されるSnapObjectsランタイムパッケージ

NuGetで以下のSnapObjectsランタイムパッケージがダウンロードできます。

  • SnapObjects.Data
  • SnapObjects.Data.AspNetCore
  • SnapObjects.Data.Oracle
  • SnapObjects.Data.PostgreSql
  • SnapObjects.Data.SqlServer
  • SnapObjects.Data.Odbc

サポートされるフレームワーク/規格

  • .NET Core/.NET Standardで動作するプロジェクトの作成
  • .NET CoreでのSnapObjects.Data.AspNetCoreまたはPowerBuilder.Data.AspNetCoreオブジェクトの利用
  • .NET Coreまたは.NET FrameworkでのSnapObject.Data、SnapObjects.Data.Oracle、SnapObjects.Data.PostgreSql、SnapObjects.Data.SqlServer、SnapObjects.Data.Odbc、PowerBuilder.Dataコンポーネントの利用

データベース接続

  • Microsoft SQL Server
  • Oracle
  • PostgreSQL
  • SQL AnywhereへのODBC接続

オブジェクトとAPI

以下は、SnapObjectsで提供される重要なオブジェクトです。

  • DataContext

DataContextは、データベース接続とトランザクションを管理するオブジェクトです。

  • SqlModelMapper

SqlModelMapperは、.NET Standardに準拠したトランザクション指向のデータ操作コンポーネントです。 複数テーブルのデータを使用したモデル構築、ネステッドレベルのリレーションシップサポート、ビジネスエンティティ(トップレベルのオブジェクトおよびそのすべての子)の明示的および暗黙的なトランザクション管理を提供します。

  • SqlExecutor

SqlExecutorは、ADO.NETのコアコンポーネントをカプセル化したデータベース操作インターフェースのセットです。 SqlExecutorを使うことで動的SQLステートメントの直接実行、SQLBuilderオブジェクト関数の実行、モデルクエリの実行を行うことができます。

SqlExecutorはRAWSQLおよび自動SQL生成と不要なパフォーマンスのボトルネックを防止するデータの遅延ロードをサポートし、POCOまたは動的モデルにリザルトセットをバインドできます。

  • SqlBuilder

SqlBuilderは、プログラムやDBに依存しない方法でSQLステートメントを構築します。 SqlBuilderでシンタックス構造を構築すれば、シンタックス構造とDataContextに基づいてデータベース固有のSQLステートメントが生成されます。

SnapObjectsで提供されているオブジェクトおよびAPIの詳細は、SnapObjects C# APIリファレンスを参照してください。

モデル属性

SQL生成は、包括的なモデル属性セットで制御します。

  • SQLクエリの定義: FromTableAttribute / SqlJoinAttribute / SqlColumnAttribute / SqlUnionAttribute / SqlWhereAttribute / SqlParameteAttribute / SqlGroupAttribute / SqlHavingAttribute / TopAttribute
  • SQL CUDの定義: SqlcolumnAttribute / IdentityAttribute / PropertySaveAttribute / UpdateWhereStrategyAttribute
  • 主従関係の定義: ModelEmbeddedAttribute / SetValueAttribute / SqlEmbeddedAttribute

トランザクション管理

SnapObjectsのトランザクションは明示的にも暗黙的にもできます。

  • 明示的なトランザクションは、context.BeginTransaction()を使用して作成します。
  • 暗黙的トランザクションでは、コミットメソッド(SqlModelMapperのSaveChangesまたはSqlExecutorのExecute/ExecuteProcedure)が実行されるまでのモデルに対するすべてのCUDオペレーションが含まれます。

SQLExecutorと異なり、SqlModelMapper のトランザクション(明示的、暗黙的を問わず)には、CRUDオペレーションだけでなく、SQLステートメントやC#オペレーションも含まれます。 SqlModelMapperのトランザクション(明示的、暗黙的を問わず)に含まれるものは、さまざまな”track(追跡)”メソッドにより識別できます。

  • モデル追跡メソッド: TrackCreate / TrackDelete / TrackCreateRange / TrackDeleteRange / TrackUpdate / Track (modelEntry) / TrackUpdateRange / TrackRange
  • SQL CUD追跡メソッド: TrackSqlCUD / TrackDeleteByKey / TrackSqlBuilder
  • マスターディテール追跡メソッド: TrackMaster / TrackDetail / TrackDetails
  • アクション追跡メソッド: Track

その他のハイライト

  • シンプルで最小限のコーディング

高度な機能をシンプルなコードで実現でき、データアクセスのメンテナンス性を最大限に高めることができるモデルです。

  • タイプセーフクエリ

.NETオブジェクトはタイプセーフなクエリのために使用され、テストAPIはSQLを検証するために提供されています。

  • ルーズリレーションシップ

リレーションシップはコーディングで定義する(事前定義しない)ため、特定のクエリだけで保持されます。

  • ファストパフォーマンス

ADO.NETと比較してもオーバーヘッドは少なく、クエリやアップデート、アクションはまとめて実行されます。

ドキュメント 一覧を見る
PowerBuilder 製品トライアル申請