SQLite.Net-PCLパッケージを削除したいのですが、sqlite-net-pclを使用したいのは、後でSQLite.Net-PCL
が正式に維持されていないことが判明したためです。sqlite-net-pclのinsertAllとUpdateAll SQLite.Net-PCLのInsertOrReplaceAll
私のXamarinプロジェクトには、GUID
を文字列型の主キーとして格納するテーブルがあります。私は、サーバーから来て、現在InserOrReplaceAll
メソッドを使用して、新しいレコードを挿入して既存のレコードを更新するリストを、私のGUID
主キーに基づいてまとめて更新しています。
さて、sqlite-net-pcl
はInsertOrReplaceAll
メソッドを持っていないが、代わりにそれだけでInsertAll
& UpdateAll
メソッドを持っています。 Microsoft msdn Linkは、主キーが使用可能かどうかをチェックし、それに基づいてレコードを挿入または更新する必要があるかどうかを判断します。
しかし、主キーの値は、オブジェクトを挿入または更新する前にList
に常にプリセットされています。レコードが存在するかどうかを確認するループを作成したくない場合があります。
挿入する方法この場合、すべてのレコードを一度に置き換えますか?
は、このシナリオを理解するために例を次の点を考慮
using (var conn = new DBConnectionService().GetConnection())
{
List<ENTEmployee> employees = new List<ENTEmployee>()
{
new ENTEmployee(){ Id = "b977ec04-3bd7-4691-b4eb-ef47ed6796fd", FullName = "AAA BBB", Salary = 15000 },
new ENTEmployee(){ Id = "c670a3e2-b13f-42b3-849c-fd792ebfd103", FullName = "BBB BBB", Salary = 16000 },
new ENTEmployee(){ Id = "d961c33c-0244-48dc-8e10-f4feb6", FullName = "CCC BBB", Salary = 17000 },
new ENTEmployee(){ Id = "35be4508-ff93-4be8-983f-d4908bcc592d", FullName = "DDD BBB", Salary = 18000 },
new ENTEmployee(){ Id = "0875549c-d06c-4983-b89a-edf81b6aa70d", FullName = "EEE BBB", Salary = 19000 },
};
var insertResult = conn.InsertAll(employees);
//Updated Record
employees[0].FullName = "AAA Updated";
employees[0].Salary = 12300;
//New Records
employees.Add(new ENTEmployee() { Id = "87f48ecf-715c-4327-9ef3-11712ba4a120", FullName = "FFF BBB", Salary = 20000 });
employees.Add(new ENTEmployee() { Id = "85f53888-b1e9-460c-8d79-88010f143bcf", FullName = "GGG BBB", Salary = 21000 });
//Now here,
//How to decide which records to be inserted and which records to be updated for List employees?
}
私は/ここに特色の問題を要求しています。https:// githubの。 com/praeclarum/sqlite-net/issues/652 – MilanG