Ling to sql更新實體概述
作者:佚名
這里介紹Ling to sql更新實體非常費勁,但是,貌似在分層系統中,數據庫操作會寫到數據訪問層,定義實體,抽象出接口。
本文向大家介紹Ling to sql更新實體,可能好多人還不了解Ling to sql更新實體,沒有關系,看完本文你肯定有不少收獲,希望本文能教會你更多東西。
Ling to sql更新實體非常費勁!一般網上的例子中都是一下這樣的。
- Customer cust = db.Customers.First(c => c.CustomerID == "ALFKI");
- cust.ContactTitle = "Vice President";
- db.SubmitChanges();
但是,貌似在分層系統中,數據庫操作會寫到數據訪問層,定義實體,抽象出接口。
實體類 :
- /// <summary>
- /// 計劃任務
- /// </summary>
- [Table(Name = "EDM_TaskPlan")]
- public class TaskPlan
- {
- /// <summary>
- /// 計劃編碼
- /// </summary>
- [Column(IsDbGenerated=true,IsPrimaryKey=true,Name="PlanID")]
- public int PlanID { get; set; }
- /// <summary>
- /// 任務名稱
- /// </summary>
- [Column(Name="PlanName")]
- public string Name { get; set; }
- /// <summary>
- /// 任務描述
- /// </summary>
- [Column]
- public string Description { get; set; }
- /// <summary>
- /// 星期一定義
- /// </summary>
- [Column]
- public string MondayDef { get; set; }
- /// <summary>
- /// 星期二定義
- /// </summary>
- [Column]
- public string TuesdayDef { get; set; }
- /// <summary>
- /// 星期三定義
- /// </summary>
- [Column]
- public string WednesdayDef { get; set; }
- /// <summary>
- /// 星期四定義
- /// </summary>
- [Column]
- public string ThursdayDef { get; set; }
- /// <summary>
- /// 星期五定義
- /// </summary>
- [Column]
- public string FridayDef { get; set; }
- /// <summary>
- /// 星期六定義
- /// </summary>
- [Column]
- public string SaturdayDef { get; set; }
- /// <summary>
- /// 星期日定義
- /// </summary>
- [Column]
- public string SundayDef { get; set; }
- }
數據訪問接口 :
- /// <summary>
- /// 任務計劃數據訪問接口
- /// </summary>
- public interface ITaskPlanDao
- {
- /// <summary>
- /// 查找全部
- /// </summary>
- /// <returns></returns>
- TaskPlan[] FindAll();
- /// <summary>
- /// 根據編碼查找
- /// </summary>
- /// <param name="id">計劃任務編碼</param>
- /// <returns></returns>
- TaskPlan FindByID(int id);
- /// <summary>
- /// 保存或更新
- /// </summary>
- /// <param name="taskPlan">任務計劃對象</param>
- /// <returns></returns>
- int SaveOrUpdate(TaskPlan taskPlan);
- /// <summary>
- /// 根據編碼刪除
- /// </summary>
- /// <param name="id">任務計劃編碼</param>
- /// <returns></returns>
- void DeleteByID(int id);
- }
但是我在Ling to sql更新實體的時候出現了問題。
- dbContext.Attach(taskPlan);
- //根本不會更新
- dbContext.Attach(taskPlan,true);
- //An entity can only be attached as modified without original state if it
- //declares a version member or does not have an update check policy
- dbContext.Attach(taskPlan,this.FindByID(taskPlan.PlanID));
- //Cannot add an entity with a key that is already in use.
網上也有解決方案,就是加IsVersion字段,感覺怪怪的。
【編輯推薦】
責任編輯:佚名
來源:
IT168