博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Entity Framework直接执行SQL语句
阅读量:7235 次
发布时间:2019-06-29

本文共 2412 字,大约阅读时间需要 8 分钟。

  一般来说linq在EF中满足了绝大部分的查询需求,而插入、删除则需要根据实体来操作,在一些情况下会造成一些麻烦。

比如现在有这样的关系:

它在数据库中生成的表:

 

  那么在实体对象上下文如果想直接操作某些Product与Category的关联时将麻烦不少,因为不能在EF下直接操作ProductCategory中间表。那么这时直接执行SQL语句来添加、删除两者之间关系会好上不少。我便是这样写的:

1         ///  2         /// 添加产品到小类 3         ///  4         /// 产品ID 5         /// 小类ID列表 6         public bool AddProductToCategory(int proID, IList
catIDs) 7 { 8 bool result = true; 9 foreach (var catID in catIDs)10 {11 try12 {13 string sql = "Insert Into [ProductCategory] Values (@proID,@catID)";14 var args = new DbParameter[] { 15 new SqlParameter { ParameterName = "proID", Value = proID},16 new SqlParameter("catID",catID)17 };18 _DataModelEntity.ExecuteStoreCommand(sql, args);19 }20 catch (System.Exception ex)21 {22 LogHelper.WriteLog(ex);23 result = false;24 }25 }26 return result;27 }28 29 ///
30 /// 删除小类产品关系31 /// 32 ///
产品ID33 ///
小类ID34 public bool DeleteProductToCategory(int proID,IEnumerable
catIDs)35 {36 bool result = true;37 foreach (var catID in catIDs)38 {39 try40 {41 string sql = "Delete From [ProductCategory] Where [Product_ID] = @proID And [Category_ID] = @catID";42 var args = new DbParameter[] { 43 new SqlParameter { ParameterName = "proID", Value = proID},44 new SqlParameter("catID",catID)45 };46 _DataModelEntity.ExecuteStoreCommand(sql, args);47 }48 catch (System.Exception ex)49 {50 LogHelper.WriteLog(ex);51 result = false;52 }53 }54 return result;55 }
执行SQL

  实际上已经有不少博文中提到了这些使用方法,这里我只是强调它的使用条件,大部分环境下,LINQ和EF的配合已经趋于完美了。

  转载请注明原址: 

转载于:https://www.cnblogs.com/lekko/archive/2013/05/28/3103374.html

你可能感兴趣的文章
linux安装opencv3
查看>>
一个令人纠结的性能性能缺陷
查看>>
ECharts
查看>>
好程序员教程分享Javascript设计模式
查看>>
ROM、PROM、EPROM、EEPROM、Flash ROM分别指什么?
查看>>
PHP环境配置遇到的问题与解决
查看>>
Linux 扩展LVM下的Volume Group、Logical Volume
查看>>
mysql备份和恢复
查看>>
再见,2012
查看>>
c语言:输出乘法口诀表
查看>>
Memcached学习笔记 — 第二部分:Memcached服务器安装
查看>>
我的友情链接
查看>>
b/s和c/s架构的理解和区别
查看>>
rsyncd.conf配置详细讲解
查看>>
List<String> 如何用jstl foreach遍历
查看>>
H2 Web Console to In Memory Database – Spring Boot
查看>>
我的友情链接
查看>>
mysql 运维常用命令收录
查看>>
linux第二周作业
查看>>
SSL及OpenSSL使用
查看>>