关注了两个库的使用方式,一个是Dapper,一个是Simple.Data.考虑一个可选的是ORMLite,
Dapper和simple.data都比较好用,动态对象的使用妙不可言,区别在于
//Dapper using (var cnn = SimpleDbConnection()) { cnn.Open(); customer.Id = cnn.Query<long>( @"INSERT INTO Customer ( FirstName, LastName, DateOfBirth ) VALUES ( @FirstName, @LastName, @DateOfBirth ); select last_insert_rowid()", customer).First(); } //Simple.data db.Users.Insert(Name: "Steve", Password: "Secret", Age: 21); public User FindUserByEmail(string email) { return Database.Open().Users.FindAllByEmail(email).FirstOrDefault(); }
比较起来,Dapper更轻巧,着眼于IDBConnection的扩展使用,SQL的生成偏重于文本模板理念,所以Dapper不需要针对特定数据库进行包装。
Simple.Data的SQL生成基于动态方法和属性,例如上面的例子,Users和FindAllByEmail不需要定义,Simple.Data会对此解释后生成特定的SQL。
至于Simple.Data为什么要对数据库要进行包装,暂时不研究,暂时使用Dapper这个库,我现在对Sqlite数据库的使用比较轻度。
两篇参考文章:
SQLite + Dapper = Simple Data Access Layer