0

https://github.com/praeclarum/sqlite-netにある sqlite-net ライブラリについて簡単な質問があります。

問題は、コレクションとカスタムオブジェクトがデータベースに挿入される方法と、必要に応じてクエリ時にそれらを元に戻す方法がわからないことです

たとえば、次のモデルを使用します。

[PrimaryKey, AutoIncrement]
public int Id { get; set; }
private string _name; // The name of the subject. i.e "Physics"
private ObservableCollection<Lesson> _lessons;
4

2 に答える 2

0

序文: 私は sqlite-net を使用していません。むしろ、質問に投稿された github リンクのソース コードを確認するだけに時間を費やしました。

sqlite-net githubサイトの最初のページから、高度な理解に役立つ 2 つの箇条書きがあります。

  • (パラメーターを使用して) CRUD 操作とクエリを安全に実行し、それらのクエリの結果を厳密に型指定された方法で取得するための非常に単純なメソッド

言い換えれば、sqlite-net は非複雑なモデルでうまく機能します。おそらく、平坦化されたモデルで最もうまく機能します。

  • クラスを強制的に変更することなく、データ モデルで動作します。(小さなリフレクション駆動の ORM レイヤーが含まれています。)

つまり、sqlite-net は SQL クエリの結果セットをモデルに変換/マッピングします。繰り返しますが、おそらく平坦化されたモデルで最もうまく機能します。

SQLite.csの主要なソース コードを見ると、コレクションを挿入するInsertAllメソッドといくつかのオーバーロードがあります。

Get<T>データをクエリするときは、メソッドと メソッドを使用できる必要があり、同様に参照できるメソッドTable<T>もありQuery<T>ます。それぞれが結果を型パラメーターにマップする必要があります。

最後に、サンプルテストを見て、フレームワークの使用法をさらに詳しく見てみましょう。

于 2013-05-14T13:39:47.150 に答える
0

過去数か月間、SQLite-net をかなり扱ってきました (昨日のこのプレゼンテーションを含む)。

コレクションとカスタム オブジェクトをデータベースに挿入する方法

答えは、そうしないだろうと思います。

SQLite-net は非常に有能なデータベースおよび ORM ですが、軽量のモバイル アプリをターゲットにしています。このように軽量に焦点を当てているため、使用されるクラスは通常、次のような非常に単純なフラット化されたオブジェクトです。

public class Course
{
    public int CourseId { get; set; }
    public string Name { get; set; }
}

public class Lesson
{
    public int LessonId { get; set; }
    public string Name { get; set; }
    public int CourseId { get; set; }
}

これらを再び結合し、関連するオブジェクトの挿入と削除を処理する必要がある場合は、アプリ開発者であるあなたが処理する必要があります。より大規模で複雑な ORM スタックにあるような関連オブジェクトの自動追跡はありません。

実際には、これが問題になることはありませんでした。モバイル アプリで SQLite-net が非常に役立つことがわかりました。

于 2013-05-14T20:55:53.663 に答える