我尝试使用 ADO.NET Entity Framework 5 使用 SQLite 数据库,并且能够连接到 SQLite 数据库并能够从数据库中的表中查询记录。但是当我尝试将记录插入表中时,SaveChanges会引发异常
"An error occurred while updating the entries. See the inner exception for details."
代码如下所示:
var connectionStr = string.Format("data source={0};Version=3;UseUTF16Encoding=True;",
fileName);
var conn = new SQLiteConnection(connectionStr);
this.personDataContext = new PersonDataContext(conn);
var persons = (from person in File.ReadAllLines(fileName)
let p = person.Split(new[] { ',', ' ' },
StringSplitOptions.RemoveEmptyEntries)
select new Person
{
ID = Convert.ToInt32(p[0]),
Name = p[1],
Address = p[2],
MobNo = Convert.ToInt32(p[3]),
PhNo = Convert.ToInt32(p[4]),
Designation = p[5]
}).ToList();
if (this.personDataContext != null && this.personDataContext.Persons != null)
{
foreach (var person in persons)
{
this.personDataContext.Persons.Add(person);
}
var saveFailed = false;
do
{
try
{
this.personDataContext.SaveChanges();
}
catch (DbUpdateConcurrencyException ex)
{
saveFailed = true;
ex.Entries.Single().Reload();
}
}
while (saveFailed);
}
当我检查内部异常时,它说未定义主键。因此,在将主键定义到表中后,每次都会出现相同的异常。
我在此处附上示例应用程序。首先使用 Open Db 打开示例数据库,然后尝试导入 CSV 文件。
我正在使用 Code First 方法,在该方法中我设计了一个 Model 类并将其与 SQLite 数据库中的表连接起来。
请帮助解决问题。谢谢!