Ling to sql更新实体概述

开发 后端
这里介绍Ling to sql更新实体非常费劲,但是,貌似在分层系统中,数据库操作会写到数据访问层,定义实体,抽象出接口。

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

数据访问接口 :

  1. /// <summary> 
  2. /// 任务计划数据访问接口  
  3. /// </summary> 
  4. public interface ITaskPlanDao  
  5. {  
  6. /// <summary> 
  7. /// 查找全部  
  8. /// </summary> 
  9. /// <returns></returns> 
  10. TaskPlan[] FindAll();  
  11.  
  12. /// <summary> 
  13. /// 根据编码查找  
  14. /// </summary> 
  15. /// <param name="id">计划任务编码</param> 
  16. /// <returns></returns> 
  17. TaskPlan FindByID(int id);  
  18.  
  19. /// <summary> 
  20. /// 保存或更新  
  21. /// </summary> 
  22. /// <param name="taskPlan">任务计划对象</param> 
  23. /// <returns></returns> 
  24. int SaveOrUpdate(TaskPlan taskPlan);  
  25.  
  26. /// <summary> 
  27. /// 根据编码删除  
  28. /// </summary> 
  29. /// <param name="id">任务计划编码</param> 
  30. /// <returns></returns> 
  31. 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描述
责任编辑:佚名 来源: IT168
相关推荐

2009-09-09 16:01:21

Linq实体继承使用

2009-09-09 16:07:16

Linq实体关系

2009-09-11 12:13:40

LINQ to SQL

2009-11-16 17:55:58

Oracle SQL语

2009-09-15 11:29:04

LINQ to SQL

2009-09-15 13:37:24

Linq To Sql

2009-09-18 16:12:22

LINQ TO SQL

2010-07-06 11:36:16

SQL Server集

2009-09-15 13:53:53

Linq To Sql

2010-07-26 11:27:43

SQL Server打

2009-09-17 16:46:34

Linq to sql

2009-09-10 10:09:46

LINQ to SQL

2010-07-19 16:26:05

SQL Server非

2010-06-17 10:43:21

SQL Server

2009-12-16 08:35:44

Fedora 9更新

2010-07-07 13:58:25

SQL Server死

2010-07-07 10:47:58

SQL Server索

2010-07-19 14:31:14

SQL Server

2010-09-17 14:36:22

SQL整体更新

2015-05-18 17:09:45

Omaha
点赞
收藏

51CTO技术栈公众号