質問: SQLiteを使用しているときにEntity Frameworkの主キーに問題があります。 SQLiteは自動インクリメントの主キーカラムのVALUESリストに明示的なNULLを望んでいます。 EFコンテキストで生成されたSQLを実際に見たことはありませんが、自動インクリメント列に値を指定しないという通常のSQL Serverの規則に従っていると思います。 ADO.NET SQLiteプロバイダーのサイトによると、EFは完全にサポートされていますが、そこでは何も助けになりません。 EFに主キー値にNULLを明示的に挿入させる方法はありますか?
回答: さて、私はついにこの仕事をしました。 id列をオートインクリメントとして設定する必要があります。これはEFで機能します。なぜこれがsqlite faqの自動インクリメントについての質問で言及されていないのか私に聞かないでください。これは一例です。 ``` create table Persona ( PersonaID integer primary key autoincrement, Nombre text) ``` また、私はビジュアルスタジオ内からこれを設定する方法を見つけませんでした、私はコマンドラインツールからそれをしなければなりませんでした。 更新:次のコードは正常に動作します。 ``` PruebaDBEntities data = new PruebaDBEntities(); foreach (int num in Enumerable.Range(1, 1000)) { Persona p = new Persona() { Nombre = "Persona " + num, Edad = num }; data.AddToPersona(p); data.SaveChanges(); Console.WriteLine(p.PersonaID); } ``` PersonaIDが設定されておらず、保存操作の後でsqliteによって割り当てられた値を持っていました。