Ling to sql更新实体概述
创始人
2024-06-06 17:20:51
0

本文向大家介绍Ling to sql更新实体,可能好多人还不了解Ling to sql更新实体,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。

Ling to sql更新实体非常费劲!一般网上的例子中都是一下这样的。

  1. Customer cust = db.Customers.First(c => c.CustomerID == "ALFKI");    
  2. cust.ContactTitle = "Vice President";    
  3. db.SubmitChanges();   

但是,貌似在分层系统中,数据库操作会写到数据访问层,定义实体,抽象出接口。

实体类 :

  1. ///  
  2. /// 计划任务  
  3. /// 
  4.  
  5. [Table(Name = "EDM_TaskPlan")]  
  6. public class TaskPlan  
  7. {  
  8. ///  
  9. /// 计划编码  
  10. /// 
  11.  
  12. [Column(IsDbGenerated=true,IsPrimaryKey=true,Name="PlanID")]  
  13. public int PlanID { get; set; }  
  14.  
  15. ///  
  16. /// 任务名称  
  17. /// 
  18.  
  19. [Column(Name="PlanName")]  
  20. public string Name { get; set; }  
  21.  
  22. ///  
  23. /// 任务描述  
  24. /// 
  25.  
  26. [Column]  
  27. public string Description { get; set; }  
  28.  
  29. ///  
  30. /// 星期一定义  
  31. /// 
  32.  
  33. [Column]  
  34. public string MondayDef { get; set; }  
  35.  
  36. ///  
  37. /// 星期二定义  
  38. /// 
  39.  
  40. [Column]  
  41. public string TuesdayDef { get; set; }  
  42.  
  43. ///  
  44. /// 星期三定义  
  45. /// 
  46.  
  47. [Column]  
  48. public string WednesdayDef { get; set; }  
  49.  
  50. ///  
  51. /// 星期四定义  
  52. /// 
  53.  
  54. [Column]  
  55. public string ThursdayDef { get; set; }  
  56.  
  57. ///  
  58. /// 星期五定义  
  59. /// 
  60.  
  61. [Column]  
  62. public string FridayDef { get; set; }  
  63.  
  64. ///  
  65. /// 星期六定义  
  66. /// 
  67.  
  68. [Column]  
  69. public string SaturdayDef { get; set; }  
  70.  
  71. ///  
  72. /// 星期日定义  
  73. /// 
  74.  
  75. [Column]  
  76. public string SundayDef { get; set; }  

数据访问接口 :

  1. ///  
  2. /// 任务计划数据访问接口  
  3. /// 
  4.  
  5. public interface ITaskPlanDao  
  6. {  
  7. ///  
  8. /// 查找全部  
  9. /// 
  10.  
  11. ///  
  12. TaskPlan[] FindAll();  
  13.  
  14. ///  
  15. /// 根据编码查找  
  16. /// 
  17.  
  18. ///  name="id">计划任务编码 
  19. ///  
  20. TaskPlan FindByID(int id);  
  21.  
  22. ///  
  23. /// 保存或更新  
  24. /// 
  25.  
  26. ///  name="taskPlan">任务计划对象 
  27. ///  
  28. int SaveOrUpdate(TaskPlan taskPlan);  
  29.  
  30. ///  
  31. /// 根据编码删除  
  32. /// 
  33.  
  34. ///  name="id">任务计划编码 
  35. ///  
  36. void DeleteByID(int id);  

但是我在Ling to sql更新实体的时候出现了问题。

  1. dbContext.Attach(taskPlan);  
  2. //根本不会更新  
  3. dbContext.Attach(taskPlan,true);  
  4. //An entity can only be attached as modified without original state if it 
  5. //declares a version member or does not have an update check policy  
  6. dbContext.Attach(taskPlan,this.FindByID(taskPlan.PlanID));  
  7. //Cannot add an entity with a key that is already in use. 

网上也有解决方案,就是加IsVersion字段,感觉怪怪的。

【编辑推荐】

  1. LINQ Expression tree分析
  2. Linq调用数据访问服务
  3. Linq实体继承简单描述
  4. Linq DataContext浅谈
  5. Linq DataLoadOptions描述

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...