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 /// <summary>

13 /// 任务名称

14 /// summary>

15 [Column(Name="PlanName")]

16 public string Name { get; set; }

17 /// <summary>

18 /// 任务描述

19 /// summary>

20 [Column]

21 public string Description { get; set; }

22 /// <summary>

23 /// 星期一定义

24 /// summary>

25 [Column]

26 public string MondayDef { get; set; }

27 /// <summary>

28 /// 星期二定义

29 /// summary>

30 [Column]

31 public string TuesdayDef { get; set; }

32 /// <summary>

33 /// 星期三定义

34 /// summary>

35 [Column]

36 public string WednesdayDef { get; set; }

37 /// <summary>

38 /// 星期四定义

39 /// summary>

40 [Column]

41 public string ThursdayDef { get; set; }

42 /// <summary>

43 /// 星期五定义

44 /// summary>

45 [Column]

46 public string FridayDef { get; set; }

47 /// <summary>

48 /// 星期六定义

49 /// summary>

50 [Column]

51 public string SaturdayDef { get; set; }

52 /// <summary>

53 /// 星期日定义

54 /// summary>

55 [Column]

56 public string SundayDef { get; set; }

57 }

 

数据访问接口 :

 1 /// <summary>

 2 /// 任务计划数据访问接口

 3 /// summary>

 4 public interface ITaskPlanDao

 5 {

 6 /// <summary>

 7 /// 查找全部

 8 /// summary>

 9 /// <returns>returns>

10 TaskPlan[] FindAll();

11 /// <summary>

12 /// 根据编码查找

13 /// summary>

14 /// <param name="id">计划任务编码param>

15 /// <returns>returns>

16 TaskPlan FindByID(int id);

17 /// <summary>

18 /// 保存或更新

19 /// summary>

20 /// <param name="taskPlan">任务计划对象param>

21 /// <returns>returns>

22 int SaveOrUpdate(TaskPlan taskPlan);

23 /// <summary>

24 /// 根据编码删除

25 /// summary>

26 /// <param name="id">任务计划编码param>

27 /// <returns>returns>

28 void DeleteByID(int id);

29 }

 

但是我在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字段,感觉怪怪的。

你可能感兴趣的:(sql)