获取sqlite
2.在sqlite官网上下载对应的版本:http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
注意这里面每个.net framework都有两个版本,一个带有bundle字眼,一个没有。一个安装的DLL里面包含sqlite.Interop.dll,而另一个没有。如果你运行代码的时候报
“无法加载sqlite.Interop.dll”的错误,则将安装文件中的sqlite.Interop.dll拷贝到Bin文件中即可。或是在NuGet下载的packages\System.Data.sqlite.Core.1.0.94.0\build中也有对应的程序。
示例代码
Model.cs
public class Person { public Int64 Id { get; set; } //注意要用Int64 public string FirstName { set; } string LastName { set; } } class MyContext : DbContext { public DbSet<Person> Persons { set; } public MyContext() : base("sqliteTest") { } }
Program.cs
static void Main(string[] args) { MyContext context = new MyContext(); var empList = context.Persons.OrderBy(c => c.FirstName).ToList(); Console.WriteLine(empList.Count); Person people = new Person() { FirstName = Hello",LastName = World" }; context.Persons.Add(people); context.SaveChanges(); Console.ReadLine(); }
示例代码很简单,就是用EF对Person表进行新增与查看。
配置config文件
如果你是用NuGet获取sqlite,会自动在config中配置一些相关的信息。
其中数据连接串是:
<add name="sqliteTest" connectionString="data source=sqliteTest.db" providerName="System.Data.sqlite.EF6" />
注意提供程序集是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" /> </defaultConnectionFactoryprovidersprovider invariantName="System.Data.sqlClient" type="System.Data.Entity.sqlServer.sqlProviderServices,EntityFramework.sqlServer" ="System.Data.sqlite.EF6"="System.Data.sqlite.EF6.sqliteProviderServices,System.Data.sqlite.EF6" /> > >