本文向大家介绍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字段,感觉怪怪的。