SQLiteのネット-PCLは、Android 7.0を除くすべてのプラットフォーム上で動作するようにのように見えます。SQLiteのネット-PCLのAndroid 7.0で正常に動作していない(Xamarin)
は、これまでのAndroid 7.0への新鮮なからアプリケーションがPKを作成することができないという問題でのSQLExceptionが原因でクラッシュしますインストールします。アプリケーションストレージをアンインストールすると、アプリの設定からアプリケーションを消去すると、アプリは完全に動作します。
他のすべてのプラットフォームは即座にインストールされているようです。私はこの問題を解決することができないようyouself https://play.google.com/store/apps/details?id=com.purewowstudio.fivestartips
を参照してください。最悪の場合、DB PCLを共有する私のiOSはまったく読み込まれません。
誰でもこれを解決する方法を知っていますか?
コードの例: - DBを初期化する
オブジェクト
using System;
namespace App.LocalObjects
{
[Preserve(AllMembers = true)]
public class LocalArticle
{
[SQLite.PrimaryKey, SQLite.Column("articleObjectId")]
public string objectId { get; set; }
public DateTime createdAt { get; set; }
public DateTime updatedAt { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Url { get; set; }
public int Status { get; set; }
public LocalArticle()
{
this.objectId = " ";
this.Title = " ";
this.Description = " ";
this.Url = " ";
}
}
}
データベース
using System;
using System.Linq;
using System.Collections.Generic;
using SQLite;
using App.LocalObjects;
namespace App.DataLayer
{
public class Database
{
static object locker = new object();
public SQLiteConnection database;
public string path;
public Database(SQLiteConnection conn)
{
database = conn;
database.CreateTable<LocalArticle>();
}
public int SaveLocalArticleItem(LocalArticle item)
{
lock (locker)
{
LocalArticle article = database.Table<LocalArticle>().FirstOrDefault(x => x.objectId == item.objectId);
if (article != null && article.objectId.Equals(item.objectId) && !article.updatedAt.Equals(item.updatedAt))
{
database.Update(item);
return item.ID;
} else {
return database.Insert(item);
}
}
}
コード:
01ここでは私のプロジェクトは、現在参照しているものです: -
'int'に' objectId'主キーを変更してみてください、その後もそれに 'SQLite.AutoIncrement'アノテーションを追加します。 – hvaughan3
ねえ@ hvaughan3。私は私の問題を修正することができました。どのようにしているのかは分かりませんが、現在は動作しているようです。私はこの問題から今解決された別のものに移行することができました。 –
ニース!あなたのコードをチェックインしてからもう一度触れないようにしてください。) – hvaughan3