注意:在Sqlite下载及配置的过程中,会出现很多版本问题上的冲突,本文使用.net4.6.1框架,大家下载Nuget包的时候清除其看清楚其支持的版本
1.下载Sqlite(需要用一下梯子)
网址:system.data.sqlite.org/index.html/… 选择 sqlite-netFx46-setup-bundle-x64-2015-1.0.115.0.exe 文件进行下载(我是64位的电脑,所以选择x86)
安装流程
2 下载SQLite/SQL Server Compact ToolBox
安装流程
使用方法
工具->SQLite/SQL Server Compact ToolBox(Toolbox就相当于数据库的可视化工具)
3 在Nuget中下载 SQLite、EntityFramework以及配置项修改(版本号按照我的就可以)
3.1 SQLite安装
3.2 EntityFramework安装
3.3app.config配置项修改
因为我们是Nuget获取的Sqlite,会自动在config中配置一些相关的信息
<?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>
<connectionStrings>
<add name="SqliteTest" connectionString="data source=SqliteTest.db" providerName="System.Data.SQLite.EF6" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.data>
<DbProviderFactories>
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
<remove invariant="System.Data.SQLite" />
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
</DbProviderFactories>
</system.data>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
</providers>
</entityFramework>
</configuration>
注意提供程序集是System.Data.SQLite.EF6。
但是这个配仍然是错误的。
如果此时运行程序,会报错:
**Unable to determine the provider name for provider factory of type 'System.Data.SQLite.SQLiteFactory'. Make sure that the ADO.NET provider is installed or registered in the application config.**
或中文错误信息:
未找到具有固定名称“System.Data.SQLite”的 ADO.NET 提供程序的实体框架提供程序。请确保在应用程序配置文件的“entityFramework”节中注册了该提供程序。意思是EF没有找到提供System.Data.SQLite.SQLiteFactory的dll,我们看看现在config中的entityFramework节点:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
</providers>
</entityFramework>
那我们就在EF的配置节点中增加一个名为System.Data.SQLite的provider,但type仍然是System.Data.SQLite.EF6(直接按照我的复制粘贴过去就可以了)
<entityFramework>
<providers>
<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite.EF6" 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" />
<!--<add name="dotConnect for SQLite" invariant="Devart.Data.SQLite" description="Devart dotConnect for SQLite" type="Devart.Data.SQLite.SQLiteProviderFactory, Devart.Data.SQLite, Version=5.17.1944.0, Culture=neutral, PublicKeyToken=09af7300eec23701" />-->
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
</DbProviderFactories>
</system.data>
4 创建DAO数据库实例
4.1选择ADO.NET实例数据库模型,点击创建
5 使用Entity Framework 6 连接Sqlite数据库
功能介绍:通过Entity Framework 6 连接Sqlite数据库,读取数据库中Produce表中的全部数据
前台界面及代码 后台代码
public partial class Produce : Window
{
public Produce()
{
InitializeComponent();
}
private void button_Click(object sender, RoutedEventArgs e)
{
List<string> groceryList = new List<string>();
//mainEntities是入口对象,通过创建DAO数据库实例后出现的入口对象,可以在Config文件中找到它(图在下面)
using (var db = new mainEntities())
{
//连接数据库,然后将数据转化为list
groceryList = (from g in db.Produces select g.ProduceName).ToList();
db.Dispose();
}
foreach (var str in groceryList)
{
listView.Items.Add(str);
}
}
}
数据库内容如图
运行结果
OK,成功读取数据库内容
参考文献: 1.www.cnblogs.com/Gyoung/p/40… 2.www.bilibili.com/video/BV1S7…