2023年6月21日发(作者:)
在EntityFramework6中执⾏SQL语句在中我介绍了如何使⽤EF6对数据库实现CRDU以及事务,我们没有写⼀句SQL就完成了所有操作。这⼀节我来介绍⼀下如何使⽤在EF6中执⾏SQL语句。你可能要问,我⽤EF不就为了避免写SQL吗?如果要写SQL我不如直接⽤得了。话虽然这么说没错,可有些时候使⽤EF操作数据还是有⼀些不⽅便,例如让你根据条件删除⼀组记录,如果按照正常的流程来⾛,你就得先把这些数据查出来,然后再⼀条⼀条地删除它们,这样不仅⿇烦⽽且性能也⽐较低。这种情况下SQL就显⽰出它的威⼒了。⽽使⽤EF执⾏SQL⼜⽐⽅便,特别是在执⾏查询语句的时候,EF会把查询到的数据⾃动保存到数据实体中,省去了使⽤DataReader的⿇烦。同时查询出来的数据还会进⾏跟踪,如果你修改了查询出的值,之后就可以很⽅便的使⽤.SaveChanges()直接更新到数据库了。ExecuteSqlCommand与SqlQuery在数据上下⽂DBModel的实例中有个Database属性,其中有两组⽅法.ExecuteSqlCommand()和.SqlQuery()。它们都可以执⾏SQL语句,只不过.ExecuteSqlCommand()是不返回结果的,只返回受影响的⾏数,所以.ExecuteSqlCommand()更适合执⾏创建、更新、删除操作。.SqlQuery()则会返回查询到的结果,并将结果保存在数据实体中,所以更适合执⾏查询操作。使⽤.ExecuteSqlCommand()实现创建、更新、删除.ExecuteSqlCommand()的使⽤⽅法也很简单,直接传⼊SQL语句就可以了,执⾏完成后会返回受影响的⾏数。1. using (var db = new DBModel()) //创建数据库上下⽂2. {3. //同步的⽅式执⾏SQL,并返回受影响的⾏数4. int result = eSqlCommand(@"CREATE TABLE `test`.`test` (5. `id` INT NOT NULL,6. PRIMARY KEY(`id`)); ");7.
8. //使⽤SqlParameter传值可以避免SQL注⼊9. var p_name = new SqlParameter("@name", "萝莉");10. var p_age = new SqlParameter("@age", 13);11.
12. //如果使⽤的是MySql数据库 需要SqlParameter把替换为MySqlParameter13. //var p_name = new MySqlParameter("@name", "萝莉");14. //var p_age = new MySqlParameter("@age", 13);15.
16. //更改学⽣年龄17. result = eSqlCommand(@"UPDATE `test`.`student`18. SET `age` = @age19. WHERE `name` = @name;", p_age, p_name);20.
21. //异步的⽅式执⾏SQL,并返回受影响的⾏数22. Task
1. class temp2. {3. public string name { get; set; }4.
5. public int age { get; set; }6. }7.
8. static void Main(string[] args)9. {10. using (var db = new DBModel()) //创建数据库上下⽂11. {12. //查询叫萝莉的学⽣信息,并指定返回值类型为student13. DbRawSqlQuery
18. DbRawSqlQuery
21. //只查询学⽣的年龄与姓名22. var result3 = ry
7. student result2 = ry
10. //如果希望.ry下查出的数据在修改后也能保存到数据库11. student result3 = ry
15. anges();16. }到此为⽌,EF6中的常⽤操作就全部讲完了,之后如果发现还有什么值得拿出来讲的,到时候再加。
2023年6月21日发(作者:)
在EntityFramework6中执⾏SQL语句在中我介绍了如何使⽤EF6对数据库实现CRDU以及事务,我们没有写⼀句SQL就完成了所有操作。这⼀节我来介绍⼀下如何使⽤在EF6中执⾏SQL语句。你可能要问,我⽤EF不就为了避免写SQL吗?如果要写SQL我不如直接⽤得了。话虽然这么说没错,可有些时候使⽤EF操作数据还是有⼀些不⽅便,例如让你根据条件删除⼀组记录,如果按照正常的流程来⾛,你就得先把这些数据查出来,然后再⼀条⼀条地删除它们,这样不仅⿇烦⽽且性能也⽐较低。这种情况下SQL就显⽰出它的威⼒了。⽽使⽤EF执⾏SQL⼜⽐⽅便,特别是在执⾏查询语句的时候,EF会把查询到的数据⾃动保存到数据实体中,省去了使⽤DataReader的⿇烦。同时查询出来的数据还会进⾏跟踪,如果你修改了查询出的值,之后就可以很⽅便的使⽤.SaveChanges()直接更新到数据库了。ExecuteSqlCommand与SqlQuery在数据上下⽂DBModel的实例中有个Database属性,其中有两组⽅法.ExecuteSqlCommand()和.SqlQuery()。它们都可以执⾏SQL语句,只不过.ExecuteSqlCommand()是不返回结果的,只返回受影响的⾏数,所以.ExecuteSqlCommand()更适合执⾏创建、更新、删除操作。.SqlQuery()则会返回查询到的结果,并将结果保存在数据实体中,所以更适合执⾏查询操作。使⽤.ExecuteSqlCommand()实现创建、更新、删除.ExecuteSqlCommand()的使⽤⽅法也很简单,直接传⼊SQL语句就可以了,执⾏完成后会返回受影响的⾏数。1. using (var db = new DBModel()) //创建数据库上下⽂2. {3. //同步的⽅式执⾏SQL,并返回受影响的⾏数4. int result = eSqlCommand(@"CREATE TABLE `test`.`test` (5. `id` INT NOT NULL,6. PRIMARY KEY(`id`)); ");7.
8. //使⽤SqlParameter传值可以避免SQL注⼊9. var p_name = new SqlParameter("@name", "萝莉");10. var p_age = new SqlParameter("@age", 13);11.
12. //如果使⽤的是MySql数据库 需要SqlParameter把替换为MySqlParameter13. //var p_name = new MySqlParameter("@name", "萝莉");14. //var p_age = new MySqlParameter("@age", 13);15.
16. //更改学⽣年龄17. result = eSqlCommand(@"UPDATE `test`.`student`18. SET `age` = @age19. WHERE `name` = @name;", p_age, p_name);20.
21. //异步的⽅式执⾏SQL,并返回受影响的⾏数22. Task
1. class temp2. {3. public string name { get; set; }4.
5. public int age { get; set; }6. }7.
8. static void Main(string[] args)9. {10. using (var db = new DBModel()) //创建数据库上下⽂11. {12. //查询叫萝莉的学⽣信息,并指定返回值类型为student13. DbRawSqlQuery
18. DbRawSqlQuery
21. //只查询学⽣的年龄与姓名22. var result3 = ry
7. student result2 = ry
10. //如果希望.ry下查出的数据在修改后也能保存到数据库11. student result3 = ry
15. anges();16. }到此为⽌,EF6中的常⽤操作就全部讲完了,之后如果发现还有什么值得拿出来讲的,到时候再加。
发布评论