国产化之 .NET Core 操作达梦数据库DM8的两种方式2
使用方法也很简单,传入SQL语句和参数即可。这里给出几个增删改查的例子:
public class PersonAdoNetDAL : IPersonDAL { static readonly DmDbClient _client = new DmDbClient("Server=127.0.0.1; UserId=TESTDB; PWD=1234567"); public int Add(PersonModel model) { string sql = "insert into Person(Name,City) Values(:Name,:City)"; DmParameter[] paras = new DmParameter[] { new DmParameter(":Name",model.Name), new DmParameter(":City",model.City) }; return _client.ExecuteAdd(sql, paras); } public bool Update(PersonModel model) { string sql = "update Person set City=:City where Id=:Id"; DmParameter[] paras = new DmParameter[] { new DmParameter(":Id",model.Id), new DmParameter(":City",model.City) }; return _client.ExecuteSql(sql, paras) > 0 ? true : false; } public bool Delete(int id) { string sql = "delete from Person where Id=:Id"; DmParameter[] paras = new DmParameter[] { new DmParameter(":Id",id), }; return _client.ExecuteSql(sql, paras) > 0 ? true : false; } public PersonModel Get(int id) { string sql = "select Id,Name,City from Person where Id=:Id"; DmParameter[] paras = new DmParameter[] { new DmParameter(":Id",id), }; PersonModel model = null; using (var reader = (DmDataReader)_client.ExecuteReader(sql, paras)) { while (reader.Read()) { model = new PersonModel(); model.Id = reader.GetInt32(0); model.Name = reader.GetString(1); model.City = reader.GetString(2); } } return model; } public List<PersonModel> GetList() { var list = new List<PersonModel>(); using (var reader = (DmDataReader)_client.ExecuteReader("select Id,Name,City from Person")) { while (reader.Read()) { var model = new PersonModel(); model.Id = reader.GetInt32(0); model.Name = reader.GetString(1); model.City = reader.GetString(2); list.Add(model); } } return list; } }
需要注意达梦数据库的参数是用冒号作为前缀的。另外数据表和字段的名字建议全部使用大写字母,单词之间使用下划线分隔,也就是蛇形命名法。此时SQL语句就不用关心大小写了,怎么写都行。
Dapper方式
Dapper是一个轻量级的ORM框架,现在使用的也很广泛,可以简化代码编写。因为Dapper扩展的IDbConnection,这是ADO.NET中的东西,我们使用的DmProvider也是实现了ADO.NET相关接口,所以Dapper可以通过DmProvider操作达梦数据库。
首先定义一个获取数据库连接对象的工厂类:
public class DmConnectionFactory { static string sqlConnString = "Server=127.0.0.1; UserId=TESTDB; PWD=123456"; public static IDbConnection GetConn() { return new DmConnection(sqlConnString); } }
然后就可以使用它执行SQL语句了:
public class PersonDapperDAL : IPersonDAL { public PersonDapperDAL() { } public PersonModel Get(int id) { string sql = "select Id,Name,City from Person where Id=:Id"; return DmConnectionFactory.GetConn().QueryFirstOrDefault<PersonModel>(sql, new { Id = id }); } public List<PersonModel> GetList() { string sql = "select Id,Name,City from Person"; return DmConnectionFactory.GetConn().Query<PersonModel>(sql).ToList(); } public int Add(PersonModel model) { string sql = "insert into Person(Name,City) Values(:Name,:City);Select @@IDENTITY"; return DmConnectionFactory.GetConn().QuerySingle<int>(sql, model); } public bool Update(PersonModel model) { string sql = "update Person set City=:City where Id=:Id"; int result = DmConnectionFactory.GetConn().Execute(sql, model); return result > 0; } public bool Delete(int id) { string sql = "delete from Person where Id=:Id"; int result = DmConnectionFactory.GetConn().Execute(sql, new { Id = id }); return result > 0; } }
uery、Execute这些方法都是Dapper定义的,可以看到能够少写很多代码。这里也不用打开连接、关闭连接,也不用写using,因为Dapper的这些方法中已经做了相关处理。
好了,以上就是本文的主要内容。如有错漏欢迎指正。