開発したC#アプリケーションをiPadアプリケーションに変換しようとしています。私たちがEntityフレームワークを使ってアプリケーションを開発したので、私はiOS用のものを探しています。iOSのSQLiteのORM
this answerによると、SQLiteのためのいくつかのORMライブラリがiOSのであります
しかし、ウェブサイトの各を読んだ後、私はまだどのパッケージを使用するかは決めることができません。そのうちの1人の経験がある方は、パッケージの長所と短所を教えていただけますか?
開発したC#アプリケーションをiPadアプリケーションに変換しようとしています。私たちがEntityフレームワークを使ってアプリケーションを開発したので、私はiOS用のものを探しています。iOSのSQLiteのORM
this answerによると、SQLiteのためのいくつかのORMライブラリがiOSのであります
しかし、ウェブサイトの各を読んだ後、私はまだどのパッケージを使用するかは決めることができません。そのうちの1人の経験がある方は、パッケージの長所と短所を教えていただけますか?
私は限られた数のORMをかなりの時間処理しており、最終的に利用可能な限定されたオプションを改善するために何かをしました。私はORMを書いて、誰もが使用できるようにBSDライセンスのもとでリリースしました。それはGitHubに掲載されています。
UPDATE:DBAccessは、オープンソースORM Sharkに置き換えられました。
私たちは最近、http://db-access.org/からダウンロードできるDBAccessというObjective-c/iOSのORMを無料で配布して使用しています。開発に数年かかりました。
これはすべての人のためのものではないかもしれませんが、私たちの努力がコミュニティの一部に役立つことを願っています。
注:、このようなフォーラムで自分の製品を宣伝するのは悪いフォームであると警告されていますが、私はOPに答えて投稿するだけです私はそれがテーブルに役立つ何かをもたらすと感じています、そして、それが誰にとってもそうでないとしても、それが何人かの人々に役立つことを心から願っています。
UPDATE:DBAccessは、オープンソースのORM Sharkに置き換えられました。 API互換で、githubで利用できます。 http://sharkorm.comと
おかげAdrian_H
あなたのプロジェクトのライセンスはいくらですか?私は自分自身に何が入っているのかを知らずに試してみるのはちょっと心配です:)。 – Max
こんにちはマックス、私たちはMITのライセンスに行くです。それは私たちの願いのために最も簡単で最も適用性が高いように見えました。 –
こんにちはエイドリアン、テーブルをアップグレードするためのガイドはありますか?追加、名前の変更、テーブルからのフィールドの削除など? –
のiOSのC#アプリケーションを変換するための最良の方法は、私が思うXamarinあるhttps://github.com/sharksync/sharkormが、そこに、ライブラリーsqlite-netある良い作品。
TL; DR:LabQLite:
LabQLiteRow
完全開示:これは私が開発したライブラリです。それはパブリックドメインにリリースされます。
ロングバージョン
チェックアウトLabQLite。それはちょっとしたコインです(あなたが手に入れたライセンスに依存しています)が、私はそれがiOS上のSQLiteのための最強の候補だと思います。
これは、あなたのためにあなたのSQLiteデータベースファイルを分析することができます、テーブルとビューに対応するクラスファイルを吐き出すことができるシェルスクリプトが付属しています。私はあなたが以前のプロジェクトから来ていると述べたことに気付きました。そのプロジェクトからSQLite dbファイルをエクスポートすることができれば、labqlitemodelgen.sh
を使用してすべてのモデルを取得して、使用可能なモデルクラスを秒単位で(データベースサイズに応じて)実行して実行できます。
注:あなたのテーブルやビューを(例えばmy_table_name)アンダースコアで命名されている場合は、Objective-Cの命名規則(例えばMyTableName)に従います生成され、対応するクラス - 同様に、テーブルの列のクラスのプロパティをモデル化します。
バージョン1.0のLabQLiteには100個の単体テストが付属しています。
LabQLite 中間レベルの定型文をと呼びます。言い換えれば、通常、すべてのC言語低レベルの定型文をiOS上でSQLiteプロジェクト用に作成した後も、モデルにはCRUDのメソッドを記述する必要があります。アプリケーションに応じてヘルパーメソッドを記述する必要があります)あまりにも。 (編集:これは、より小規模なオープンソースソリューションで一般的です)。
LabQLiteを使用すると、中間レベルまたは低レベルのbpは書き込まれません。生成されたモデルクラスは、すべてのことを行うスーパークラスから継承します。さらに、生成されたクラスは自身ではありません。はCRUDメソッドで満たされていません - モデルクラスファイルはCRUDで埋め込まれたものよりもきれいに見えます;)
SQLite dbファイルをアプリケーションのバンドル:
SQLite dbファイルをアプリケーションのバンドルに入れないと、他の高速統合アプローチもあります。
このコードでは、全体的にドキュメントとインラインコメントの両方で適切にコメントされています。
考慮すべきもう1つの要因は、保守性です。確かに、フリーズはすぐに「発見可能」を持っていますが、すぐに学ぶのは、フレームワーク/ライブラリの統合が高速ですが、アプリの成熟度が遅いことです。あなたのモデルコード(すなわち、中規模および低位の定型文)。
LabQLiteはObjective-Cで書かれているため、たとえばレガシーシステムや現代のアプリケーションで使用できます。
LabQLiteは概念的には「伸縮可能なはしご」のようです。あなたのアプリを構築するための
処理するために、データベース・オブジェクトまたはデータベースコントローラオブジェクトにNSString
クエリを渡し、あなたはORMとしてLabQLiteを使用してにpigeonholedされていません...どちらも完全にも部分的に。条件付きのロジックをカプセル化するオブジェクト型もあります(LabQLiteStipulation
)。したがって、そこにも柔軟性があります。
更新についてはhttps://twitter.com/labitorysupport/をご覧ください。
概要
LabQLiteの強みは、次のとおりです。
以内に文書化され、レガシーシステム
データベースを再設計する場合@SBに同意します。コアデータを試してみてください。私がfmdbで作業していると言われているライブラリと同じデータベース(またはデータベース構造)を使用する予定がある場合は、高速で使いやすいものです(他のものはテストしていません) – tkanzakic
@tkanzakicあなたの素晴らしいヒントをありがとう。データベースの再設計は、現在のC#アプリケーションの既存のデータベースが既にあるので、最後にやりたいことです。 –