Entity Framework——执行sql语句

摘要:
时间短,水平有限。如果有什么问题,请改正。

EF版本:6.0.0

EF对大量数据或多表连接一次操作耗时较大,或要求响应时间尽可能小,因此采用EF框架执行SQL语句的方案

1DbContext.Database

这个类包含了大量的操作方法,见截图:

Entity Framework——执行sql语句第1张

查询方法举例:

using (CustomDbContext db = newCustomDbContext())
            {
                string sql = "SELECT * FROM collections LEFT JOIN collectionusers ON collections.`Id`=collectionusers.`Collection_Id`";
                var task = db.Database.SqlQuery<Collection>(sql).ToListAsync();
                task.Wait();
                var r =task.Result;
            }

删除方法举例:

using (CustomDbContext db = newCustomDbContext())
            {
                string sql = "delete from collectionusers where Id=@id";
                var num = db.Database.ExecuteSqlCommand(sql, new MySqlParameter("@id", 322));
            }

注意操作Mysql数据库,一定要是有MySqlParameter而不能使用SqlParameter,使用SqlParameter会抛出异常:Only MySqlParameter objects may be stored

更新方法举例:

using (CustomDbContext db = newCustomDbContext())
            {
                string sql = "update collectionusers set InsertTime=@time where Id=@id";
                var num = db.Database.ExecuteSqlCommand(sql, new MySqlParameter("@time", DateTime.Now),new MySqlParameter("@id", 323));
            }

插入方法举例:

using (CustomDbContext db = newCustomDbContext())
            {
                db.Database.ExecuteSqlCommand("SET SQL_SAFE_UPDATES=0");//不启用更新安全模式
                db.Database.ExecuteSqlCommand("SET FOREIGN_KEY_CHECKS=0");//取消外键约束
                string sql = "INSERT INTO collectionusers (`InsertTime`, `Collection_Id`, `User_Id`)VALUES(@insertTime,@cid, @uid)";
                var num = db.Database.ExecuteSqlCommand(sql, new MySqlParameter("@insertTime", DateTime.Now), new MySqlParameter("@cid", 11), new MySqlParameter("@uid",22));
            }

事务操作举例:

CustomDbContext db = null;
            DbContextTransaction tran = null;
            try{
                db = newCustomDbContext();
                tran =db.Database.BeginTransaction();
                db.Database.ExecuteSqlCommand("SET SQL_SAFE_UPDATES=0");//不启用更新安全模式
                db.Database.ExecuteSqlCommand("SET FOREIGN_KEY_CHECKS=0");//取消外键约束
                string sql = "INSERT INTO collectionusers (`InsertTime`, `Collection_Id`, `User_Id`)VALUES(@insertTime,@cid, @uid)";
                var num = db.Database.ExecuteSqlCommand(sql, new MySqlParameter("@insertTime", DateTime.Now), new MySqlParameter("@cid", 11), new MySqlParameter("@uid", 22));
                tran.Commit();
            }
            catch{
                tran.Rollback();
            }
            finally{
                if (db != null) db.Dispose();
                if (tran != null) tran.Dispose();
            }

-----------------------------------------------------------------------------------------

转载与引用请注明出处。

时间仓促,水平有限,如有不当之处,欢迎指正。

免责声明:文章转载自《Entity Framework——执行sql语句》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Apache James 使用MySQL存储启动报错Specified key was too long; max key length is 3072 bytesCentos-文本过滤-grep下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

VSCode插件MSSQL教程(昨天提了一下)

推荐一个跨平台SQL IDE:https://docs.microsoft.com/zh-cn/sql/sql-operations-studio/download 什么数据库都木有(系统自带的不算) 插件自己安装一下 按F1,输命令 连接就输入名字,创建就空着 用户名 下次就不用再输了 可以不填 连接成功了 创建数据库,创建表等等...

SQL Server数据库级别触发器

  禁止修改表结构和加表 CREATE TRIGGER [Object_Change_Trigger_DDL] ON DATABASE FOR ALTER_TABLE,DROP_TABLE,CREATE_TABLE,CREATE_INDEX,ALTER_INDEX, DROP_INDEX AS DECLARE @EventData AS XML;...

aspnet_regsql在哪里 怎么运行它 以及功能介绍(转)

今天第一次按照书上的步骤运行NET Framework 工具ASP.NET SQL Server 注册工具 (Aspnet_regsql.exe),按照书上所说的Aspnet_regsql.exe 文件位于 Web 服务器上的 [drive:]\WINDOWS\Microsoft.NET\Framework\versionNumber 文件夹中。我打开后发...

SQL数据库设计的命名规范

< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> 1 相关的设计规范:1.1 采用有意义的字段名尽可能地把字段描述的清楚些。当然,也别做过头了,比如CustomerShippingAddressStreetLine1 虽然很富有说...

ORACLE ROWNUM解析[转]

一、对rownum的说明    关于Oracle 的 rownum 问题,很多资料都说不支持SQL语句中的“>、>=、=、between...and”运算符,只能用如下运算符号“<、<=、!=”,    并非说用“>、>=、=、between..and”时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫...

Java数据库连接--JDBC基础知识(操作数据库:增删改查)

一、JDBC简介   JDBC是连接java应用程序和数据库之间的桥梁。   什么是JDBC?   Java语言访问数据库的一种规范,是一套API。   JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类,使用这些接口和类,Java客户端程序可以访问各种不同类型的数据库...