1.安裝,直接用nuget搜索Dapper就行,不過只支持框架4.5.1sql
2.數據庫測試表數據庫
CREATE TABLE [dbo].[Student]( [ID] [bigint] NULL, [Name] [nvarchar](50) NULL, [Birthday] [date] NULL, [TeacherID] [bigint] NULL, [Level] [smallint] NULL, [Remark] [nvarchar](50) NULL ) ON [PRIMARY] GO
CREATE TABLE [dbo].[Teacher]( [ID] [bigint] NULL, [Name] [nvarchar](50) NULL, [Birthday] [date] NULL, [Gender] [bit] NULL ) ON [PRIMARY]
3.Personapp
class Person { public int ID { get; set; } public string Name { get; set; } public DateTime Birthday { get; set; } }
4.Student框架
class Student:Person { /// <summary> /// 這裏故意加了加了個一個實體Teacher,在數據庫裏面,只有一個TeacherID /// </summary> public Teacher Teacher{set;get;} public int TeacherID { set; get; } public int? Level{set;get;} public string Remark{set;get;} }
5.Teacher測試
class Teacher:Person { public bool Gender { get; set; } }
6.測試代碼spa
class Program { static IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["dbstring"].ConnectionString); static void Main(string[] args) { string sql = string.Empty; { //普通插入 sql = "insert into Teacher values(@ID,@Name,@Birthday,@Gender) "; var max = db.Query<int>("select isnull(max(id),0) id from Teacher"); var maxID = max == null ? 1 : max.FirstOrDefault(); Teacher t = new Teacher() { ID = (maxID + 1), Gender = false, Name = "Miss Gao", Birthday = DateTime.Now.AddYears(-34) }; var result = db.Execute(sql, t); } { // //普通插入 var max = db.Query<int>("select isnull(max(id),0) id from student"); var maxID = max == null ? 1 : max.FirstOrDefault(); sql = "insert into student values(@ID,@Name,@Birthday,@TeacherID,@Level,@Remark)"; var result = db.Execute(sql, new Student() { ID = (maxID + 1), Name = "Jim", TeacherID = 1, Remark = "a", Birthday = DateTime.Now, Level = 1 }); } {//無條件查詢 var result1 = db.Query<Student>("Select * from Student");// var result2 = db.Query<Student>("Select [ID] ,[Name] ,[Birthday] ,[TeacherID] ,[Level] ,[Remark] from Student");// } {//帶條件查詢 var result1 = db.Query<Student>("Select * from Student where name=@Name", new Student() { Name = "Jim" });// var result2 = db.Query<Student>("Select * from Student where id=@ID", new Student() { ID = 2 });// var result3 = db.Query<Student>("Select [ID] ,[Name] ,[Birthday] ,[TeacherID] ,[Level] ,[Remark] from Student", new { Name = "Jim" });// } {//聯合查詢 sql = @"Select * from Student a join teacher b on a.TeacherID = b.id --where a.ID=@ID";//這裏加條件怎麼辦?拼接SQL? var result = db.Query<Student, Teacher, Student>(sql, (s, t) => { s.Teacher = t; return s; }); } {//聯合查詢2 sql = @"Select * from Student where id=@ID ; select * from teacher where ID = (select teacherid from student where id=@ID)"; var result = db.QueryMultiple(sql, new { ID=5}); var s = result.Read<Student>().FirstOrDefault(); s.Teacher = result.Read<Teacher>().FirstOrDefault(); } {//聯合查詢3 sql = @"Select * from Student where id=@ID ; select * from teacher where Name =@Name"; var result = db.QueryMultiple(sql, new { ID = 5,Name="Miss Gao" });//這裏的參數 是很奇怪的哦 var s = result.Read<Student>().FirstOrDefault(); var t= result.Read<Teacher>().FirstOrDefault(); } } }