數據訪問層(DAL),主要是存放對數據類的訪問,即對數據庫的添加、刪除、修改、更新等基本操作
首先需要在UI層App.Config配置文件中增加連接字符串,如下所示
<connectionStrings> <add name="con" connectionString="Data Source=127.0.0.1;Initial Catalog=Northwind;User ID=sa;Password=*******;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"/> </connectionStrings>
在DAL類庫中添加Configuration引用,這樣才能訪問App.config配置
在DAL類庫中添加RegionService.cs類
類庫結構如下
添加類庫引用
並在項目using中引用以下命名空間
using Dapper; using System.Configuration; using Northwind.Model; using System.Data; using System.Data.SqlClient;
在類中增加訪問數據庫字符串的靜態變量,以供整個類中訪問數據庫
private static string connStr = ConfigurationManager.ConnectionStrings["con"].ConnectionString;
根據RegionID查詢數據庫中的數據
public static Region GetById(int id) { using (IDbConnection conn = new SqlConnection(connStr)) { string sql = "SELECT r.RegionID, r.RegionDescription FROM Region AS r WHERE r.RegionID=@RegionID"; DynamicParameters parameters = new DynamicParameters(); parameters.Add("RegionID", id); IEnumerable<Region> region = conn.Query<Region>(sql, parameters); return region.FirstOrDefault(); } }
添加數據
public static bool Insert(Region region) { using (IDbConnection conn = new SqlConnection(connStr)) { string sql = @"INSERT INTO Region ( RegionID, RegionDescription ) VALUES ( @RegionID, @RegionDescription )"; DynamicParameters parameters = new DynamicParameters(); parameters.Add("RegionID", region.RegionID); parameters.Add("RegionDescription", region.RegionDescription); return conn.Execute(sql, parameters) > 0; } }
判斷數據是否存在
public static bool IfExists(Region region) { using (IDbConnection conn = new SqlConnection(connStr)) { string sql = "SELECT r.RegionID, r.RegionDescription FROM Region AS r WHERE r.RegionID=@RegionID AND r.RegionDescription=RegionDescription"; DynamicParameters parameters = new DynamicParameters(); parameters.Add("RegionID", region.RegionID); parameters.Add("RegionDescription", region.RegionDescription); IEnumerable<Region> regions = conn.Query<Region>(sql, parameters); return regions.Count<Region>() > 0; } }