2

SQLite-net で作業している私です。テーブルの主キーに AutoIncrement がない場合、コードが機能していました。キーを自動インクリメントしたかったので、次のようにテーブルを再構築しました。

using SQLite;

namespace VehicleTracks.Models
{
    public class vehicles
    {
        [PrimaryKey, AutoIncrement]
        public int ID { get; set; }
        public string VehID { get; set; }
        public string VehYear { get; set; }
        public string VehMake { get; set; }
        public string VehModel { get; set; }
        public string VehColor { get; set; }
        public string EngineID { get; set; }
        public System.DateTime PurchaseDate { get; set; }
        public string SellerName { get; set; }
        public string SellerStreet { get; set; }
        public string SellerCityStateZip { get; set; }
        public string VehOptions { get; set; }
        public string OdomInitial { get; set; }
        public string VehBodyStyle { get; set; }
        public float PurchaseCost { get; set; }
        public byte[] VehPhoto { get; set; }
        public string VehType { get; set; }
        public string Sold { get; set; }
    }
}

テーブルを作成しようとすると、「AutoIncrement 付近の構文エラー」が発生します。AutoIncrement をオフにしてみましたが、それがないと ID がインクリメントされないようです。

私はおそらく愚かな何かを見逃しています。

4

3 に答える 3

0

私は sqlite-net ( https://github.com/praeclarum/sqlite-net ) を初めて使用し、自動インクリメント PK に問題がありました。

INTEGER PRIMARY KEY または INTEGER PRIMARY KEY AUTOINCREMENT を使用してテーブルを作成しましたが、PK が最初の行で 0 に設定されていたため、挿入時に例外が発生し、同じ値を挿入しようとしたために例外が発生したため、自動インクリメント動作していませんでした。私が行ったことは、DataAccess.cs を編集することであり、テーブル クラスで [PrimaryKey] public Int64 id { get; を置き換えました。設定; } for [PrimaryKey] [AutoIncrement] public Int32 id { get; 設定; }。テーブルの作成でINTEGERを指定したため、Int32の代わりにbigint(Int64)を使用する理由はわかりませんが、現在は正常に機能しています。LINQ を使用して新しい項目を追加すると、自動インクリメント ID (テーブルの主キー) が各行で自動的にインクリメントされます。

于 2016-08-22T14:03:34.287 に答える