フォーム。しかし、彼らは自分のクラスのコレクションであるため、SQLiteはそれらを認識しません。論文を保存する最良の方法は何でしょうか?または私は何が間違っている。私のアプリでは、Xamarinは私が上に複数の私が保存したい私のアプリでObservableCollections、編集を有してい
:
並べ替えのようなものになります(もちろん、より多くのコードが内部にあります)
public partial class App : Application
{
static MyDatabase database;
public static MyDatabase Database
{
get
{
if (database == null)
{
database = new MyDatabase(DependencyService.Get
<IFileHelper>().GetLocalFilePath("MyListSQLite.db3"));
}
return database;
}
}
}
てMyDatabase:
public class MyDatabase
{
readonly SQLiteAsyncConnection database;
public MyDatabase(string dbPath)
{
database = new SQLiteAsyncConnection(dbPath);
database.CreateTableAsync<MyClass>().Wait();
}
public Task<List<MyClass>> GetItemsAsync()
{
return database.Table<MyClass>().ToListAsync();
}
\t public Task<MyClass> GetItemAsync(int id)
\t {
\t \t return database.Table<MyClass>().Where(i => i.ID == id).FirstOrDefaultAsync();
\t }
\t public Task<int> SaveItemAsync(MyClass item)
\t {
\t \t if (item.ID != 0)
\t \t {
\t \t \t return database.UpdateAsync(item);
\t \t }
\t \t else
\t \t {
\t \t \t return database.InsertAsync(item);
\t \t }
\t }
\t public Task<int> DeleteItemAsync(MyClass item)
\t {
\t \t return database.DeleteAsync(item);
\t }
}
のMyClass:
public class MyClass : ObservableCollection<MyOtherClass>
{
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
}
MyOtherClass:コのための私たちのアプリケーションのほとんどで
public class MyOtherClass : BindableObject
{
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
public static readonly BindableProperty ListNbrProperty =
BindableProperty.Create("ListNbr", typeof(int), typeof(MyOtherClass), default(int));
\t \t public int ListNbr
\t \t {
\t \t \t get { return (int)GetValue(ListNbrProperty); }
\t \t \t set { SetValue(ListNbrProperty, value); }
\t \t }
public bool IsMaster { get; set; }
\t \t public static readonly BindableProperty ResizedPathProperty =
BindableProperty.Create("ResizedPath", typeof(String), typeof(MyOtherClass), default(String));
\t \t public String ResizedPath
\t \t {
get { return (String)GetValue(ResizedPathProperty); }
\t \t \t set { SetValue(ResizedPathProperty, value); }
\t \t }
...
}
これは、これを実行するための最良の方法ではないと思います。 MyOtherClassオブジェクトを保存したいと思うようです。コレクションがあなたのオブジェクトを表示すること以外は(ライブを表示または処理するためだけに)生きる理由がないと、 'database.InsertAll'または' databaseを使ってこれを行うことができます。 UpdateAll'をデータベースクラスに追加します。 –