Ling to sql更新エンティティの概要
15056 ワード
本文はみんなにLing to sql更新実体を紹介して、多くの人がまだLing to sql更新実体を理解していないかもしれませんが、大丈夫です.本文を見終わったら、きっと多くの収穫があります.本文がもっと多くのことを教えてくれることを望んでいます.
Ling to sqlエンティティの更新は大変です!一般的なネット上の例では、このようなものがあります.
しかし、階層化システムでは、データベース操作がデータアクセス層に書き込まれ、エンティティが定義され、インタフェースが抽象化されるようです.
エンティティークラス:
データアクセスインタフェース:
しかし、Ling to sqlがエンティティを更新したときに問題が発生しました.
ネット上にも解決策がありますが、IsVersionフィールドを加えると、変な感じがします.
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フィールドを加えると、変な感じがします.