これは、MonoTouch の Vici CS ORM がどのように機能するかを理解していないことに関係していると思います。Vici CS for Monotouch を使用する場合、主キーが INTEGER AUTOINCREMENT に設定されていない場合、DB マップ オブジェクトのインスタンス化に長い時間がかかります (数十秒)。PK が INTEGER AUTOINCREMENT の場合、実行はスムーズです。
私の DB マップ クラスは次のようになります。
[MapTo("Employees")]
public class Employee : CSObject<Employee, int>
{
public Employee () { }
public int EmployeeId { get { return (int)GetField ("EmployeeId "); } }
public string Name{ get { return (string)GetField ("Name"); } set { SetField ("Name",value); } }
public string Address{ get { return (string)GetField ("Address"); } set { SetField ("Address",value); } }
}
データベース作成スクリプト:
CREATE TABLE Employees (EmployeeId INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT, Address TEXT)");
テーブル作成スクリプトで AUTOINCREMENT キーワードを削除すると、Employee オブジェクトのインスタンス化が遅くなります。削除しなくても問題なく動作します。
その制約を回避する推奨される方法はありますか? たとえば、GUID などを含むことができる主キーとして TEXT フィールドを持つことは可能ですか?