我刚刚将我的应用程序连接到SQLite并设法自动创建它(如果不存在)。
但是,由于某种原因未在其中创建表。当我调试时,它在各个方面向我显示了此异常:
System.Invalid操作异常数据库连接对无效 获取更改次数
数据库连接对于获取最后一个插入行ID无效
这是我的appconfig
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6"/>
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
<connectionStrings>
<add name="AutoPrint" connectionString="data source.\AutoPrintDb.sqlite" providerName="System.Data.SQLite" />
</connectionStrings>
</configuration>
这是我的DbContext:
public class AutoPrintDbContext : DbContext
{
public AutoPrintDbContext() : base("AutoPrint")
{
if (!Database.Exists("AutoPrint"))
{
Database.SetInitializer(new DropCreateDatabaseAlways<AutoPrintDbContext>());
}
}
public DbSet<Programs> Programs { get; set; }
}
编辑:
我在此处添加了例外的图片:
这是我的程序模型
public class Programs
{
[Key]
public string Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public int Fields { get; set; }
public string Filetype { get; set; }
}
答案 0 :(得分:0)
您是否更改了连接字符串?缺少等于(=)。
<add name="AutoPrint" connectionString="data source.\AutoPrintDb.sqlite" providerName="System.Data.SQLite" />
到
<add name="AutoPrint" connectionString="data source=.\AutoPrintDb.sqlite" providerName="System.Data.SQLite" />