SnapObjects 1.0.x 機能一覧
※このページは、2019年8月13日時点のGetting Started with SnapObjects – Features List of SnapObjects 1.0.xを日本語訳したものです。
このドキュメントでは、SnapObjects 1.0.xの新機能を紹介します。
NuGetで提供されるSnapObjectsランタイムパッケージ
NuGetで以下のSnapObjectsランタイムパッケージがダウンロードできます。
- SnapObjects.Data
- SnapObjects.Data.SqlServer
- SnapObjects.Data.Oracle
- SnapObjects.Data.PostgreSql
- SnapObjects.Data.Odbc
- SnapObjects.Data.AspNetCore
サポートされるフレームワーク/規格
- .NET Core/.NET Standardで動作するプロジェクトの作成
- .NET CoreでのSnapObjects.Data.AspNetCoreオブジェクトの利用
- .NET Coreまたは.NET FrameworkでのSnapObject.Data、SnapObjects.Data.Oracle、SnapObjects.Data.PostgreSql、SnapObjects.Data.SqlServer、SnapObjects.Data.Odbcコンポーネントの利用
データベース接続
- Microsoft SQL Server
- サポートバージョン : 2016, 2017
- Oracle
- サポートバージョン : 12c, 18c
- PostgreSQL
- サポートバージョン : 11.3, 10.1, 9.6
- SQL Anywhere(64bitのみ)へのODBC接続
- サポートバージョン : 16 (16.0.0.2043以降), 17
オブジェクトとAPI
以下は、SnapObjectsで提供される主要なオブジェクトです。
- DataContext
DataContextは、データベース接続とトランザクションを管理するオブジェクトです。
- SqlModelMapper
SqlModelMapperは、.NET Standardに準拠したトランザクション指向のデータ操作コンポーネントです。 複数テーブルのデータを使用したモデル構築、ネステッドレベルのリレーションシップサポート、ビジネスエンティティ(トップレベルのオブジェクトおよびそのすべての子)の明示的および暗黙的なトランザクション管理を提供します。
- SqlExecutor
SqlExecutorは、ADO.NETのコアコンポーネントをカプセル化したデータベース操作インターフェースのセットです。 SqlExecutorを使うことで動的SQLステートメントの直接実行、SQLBuilderオブジェクト関数の実行、モデルクエリの実行を行うことができます。
SqlExecutorはSQLおよび自動生成されたSQLと不要なパフォーマンスのボトルネックを防止するデータの遅延ロードをサポートし、POCOまたは動的モデルにリザルトセットをバインドできます。
- SqlBuilder
SqlBuilderは、プログラムやDBに依存しない方法でSQLステートメントを構築します。 SqlBuilderでシンタックス構造を構築すれば、シンタックス構造とDataContextに基づいてデータベース固有のSQLステートメントが生成されます。
SnapObjectsで提供されているオブジェクトおよびAPIの詳細は、SnapObjects .NET 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と比較してもオーバーヘッドは少なく、クエリやアップデート、アクションはまとめて実行されます。