ServiceStack.OrmLite の機能を調べようとしていますが、構成 (外部キー、データ型、列インデックス、エイリアスなど) にブートストラップ クラスを使用できるかどうかわかりませんか? エンティティ クラスでデータ注釈属性を使用したくありません。ある種の構成を使用することでさえ、属性よりも優れています。それは、将来ORMを置き換える機会が欲しいからです. 流暢な構成のためのサードパーティのライブラリが存在する可能性がありますか?
2 に答える
ServiceStack.OrmLite の流暢なマッピングはありません。私の Model 定義から DataAnnotations アセンブリでさえも参照するのをためらうあなたと同じです。私は自分の POCO が完全にクリーンであることが好きです。サードパーティのアセンブリを参照せずに、独自のアセンブリで分離します。それは美学というよりは、良いデザインを壊してしまう手抜きをしたいという誘惑を避けるために腕をひねる方法です。私は、それがクリーンな ORM でない場合、それは密結合された DAL であり、いずれにせよすべてが無駄になるということです。
とにかく-ブートストラップ/実装でPOCOクラスに間違いなく注釈を付けることができます。一種の場所 - それは非常に明白です: リフレクションを使用し、実行時に属性を追加します。
typeof (User).GetProperty("Id")
.AddAttributes(new AutoIncrementAttribute());
OrmLite の任意の属性 (および実際には任意の属性) の同じ原則。
OrmLite の単体テストでヒントを見つけました。実際にはCan_add_AutoIncrement_Id_at_runtime()
単体テストがあります。これは本質的に .NET コアの単体テストであり、実際には OrmLite ではありません。とにかく、テスターの皆さん、ありがとう。
ServiceStack OrmLiteは、コード ファーストの POCO に基づいてスキーマを作成します。属性を追加すると、OrmLite にテーブルを作成させたい場合に、SQL で生成されたテーブル スキーマを変更するのに便利です。属性を使用したくない場合は、帯域外でデータベースに SQL スキーマを手動で作成するか、テーブルの作成後に属性を削除します。
または、別の ORM を使用すると、OrmLite はランタイム構成ファイルに格納されたマッピングをサポートしなくなります。これは、コード ファーストの哲学に反します。