SQLite與實體框架

entity-framework system.data.sqlite

使用SQLite時,我在Entity Framework中遇到主鍵問題。 SQLite希望在自動增量主鍵列的VALUES列表中顯式為NULL。我實際上沒有看過EF上下文中生成的SQL,但我相信它與通常的SQL Server約定一致,即不為自動增量列提供任何值。

根據ADO.NET SQLite提供程序的站點 ,EF完全受支持,但我找不到任何幫助。有沒有辦法強制EF為主鍵值顯式插入NULL?

一般承認的答案

好吧,我終於完成了這項工作:D。您需要將id列設置為autoincrement,這樣它就可以與EF一起使用。不要問我為什麼在sqlite faq中關於自動增量的問題中沒有提到這一點。這是一個例子:

create table Persona ( PersonaID integer primary key autoincrement, Nombre text)

另外,我沒有找到從visual studio中設置它的方法,我必須從命令行工具中完成。

更新:以下代碼工作正常。

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指定的值。


熱門答案

萬歲......我找到了解決方案!

  1. 在create table語句中將ID列聲明為INTEGER PRIMARY KEY AUTOINCREMENT。 INTEGER PRIMARY KEY無效!
  2. 在Visual Studio中更新您的實體框架模型,將ID列屬性StoreGeneratedPattern設置為“Computed”


許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因