Advertisement
Guest User

Untitled

a guest
Oct 7th, 2015
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.62 KB | None | 0 0
  1. public class WorkOrder1
  2. {
  3. public int Id { get; set; }
  4. public string Accepter { get; set; }
  5. public string Foreman { get; set; }
  6. public string myDate { get; set; }
  7. public ICollection<GuideWorkTypeStandardHour1> GuideWorkTypeStandardHour1s { get; set; }
  8. public WorkOrder1()
  9. {
  10. GuideWorkTypeStandardHour1s = new List<GuideWorkTypeStandardHour1>();
  11. }
  12. }
  13.  
  14. public class GuideWorkTypeStandardHour1
  15. {
  16. public int Id { get; set; }
  17. public string CodeWork { get; set; }
  18. public ICollection<WorkOrder1> WorkOrder1s { get; set; }
  19. public GuideWorkTypeStandardHour1()
  20. {
  21. WorkOrder1s = new List<WorkOrder1>();
  22. }
  23.  
  24. }
  25.  
  26. private void button1_Click_1(object sender, EventArgs e)
  27. {
  28. WorkOrder1 wo = new WorkOrder1();
  29. wo.myDate = maskedTextBoxData.Text;
  30. wo.Accepter = textBoxAccepter.Text;
  31. wo.Foreman = textBoxForeman.Text;
  32. wo.BestPractice = textBox4Recommendation.Text;
  33.  
  34. db.WorkOrders.Add(wo);
  35. db.SaveChanges();
  36.  
  37. }
  38.  
  39. List<GuideWorkTypeStandardHour1> guideWorkTypeStandardHour1;
  40. WorkOrder1 workOrder1 = db.WorkOrders.Find(ListWorkOrders.workorderselectedId);
  41.  
  42. var works = db.GuideWorkTypeStandardHour1s;
  43.  
  44. foreach(var w in works)
  45. {
  46. if(workOrder1.GuideWorkTypeStandardHour1s.Contains(w))
  47. {
  48. guideWorkTypeStandardHour1.Add(w);
  49. }
  50. }
  51.  
  52. public class WorkOrder1
  53. {
  54. public int Id { get; set; }
  55. public string Accepter { get; set; }
  56. public string Foreman { get; set; }
  57. public string myDate { get; set; }
  58.  
  59. [ForeignKey("Id")]
  60. public virtual ICollection<GuideWorkTypeStandardHour1> GuideWorkTypeStandardHour1s { get; set; }
  61. public WorkOrder1()
  62. {
  63. GuideWorkTypeStandardHour1s = new List<GuideWorkTypeStandardHour1>();
  64. }
  65. }
  66.  
  67. public class GuideWorkTypeStandardHour1
  68. {
  69. public int Id { get; set; }
  70. public string CodeWork { get; set; }
  71.  
  72. [ForeignKey("Id")]
  73. public virtual ICollection<WorkOrder1> WorkOrder1s { get; set; }
  74. public GuideWorkTypeStandardHour1()
  75. {
  76. WorkOrder1s = new List<WorkOrder1>();
  77. }
  78. }
  79.  
  80. public virtual ICollection<GuideWorkTypeStandardHour1> GuideWorkTypeStandardHour1s { get; set; }
  81.  
  82. var order = db.WorkOrder
  83. .Where(x=>x.Id==512)
  84. .Include(x=>x.GuideWorkTypeStandardHour1s);
  85.  
  86. var order = db.WorkOrder
  87. .Where(x=>x.Id==512)
  88. .Include("GuideWorkTypeStandardHour1s");
  89.  
  90. [ForeignKey("Id")]
  91. public virtual ICollection<GuideWorkTypeStandardHour1> GuideWorkTypeStandardHour1s { get; set; }
  92.  
  93. public class A {
  94. public int Id { get; set; }
  95. public virtual ICollection<B> Bs { get; set; }
  96. }
  97.  
  98. public class B {
  99. public int Id { get; set; }
  100. public virtual ICollection<A> As { get; set; }
  101. }
  102.  
  103. public void Connect(A a, B b) {
  104. if (a.Bs == null) // Проверка на случай отсутствия Lazy Loading
  105. a.Bs = new List<B>();
  106.  
  107. a.Bs.Add(b);
  108.  
  109. // И не забыть SaveChanges()
  110. }
  111.  
  112. public void Connect(DbContext ctx, int ida, int idb) {
  113. var a = new A { Id = ida };
  114. var b = new B { Id = idb };
  115.  
  116. // Если сущности c указанными ключами уже загружены в контекст - тут будет ошибка
  117. // Постарайтесь, чтобы так не случалось (лучший способ - каждый раз создавать новый контекст)
  118. ctx.Entry(a).State = EntityState.Unchanged;
  119. ctx.Entry(b).State = EntityState.Unchanged;
  120. a.Bs = new [] { b };
  121. ctx.SaveChanges();
  122.  
  123. // Очистка контекста - можно не делать, если контекст больше не будет использоваться
  124. ctx.Entry(a).State = EntityState.Detached;
  125. ctx.Entry(b).State = EntityState.Detached;
  126. }
  127.  
  128. public void Disconnect(A a, B b) {
  129. a.Bs.Remove(b); // Если Lazy Loading выключен и коллекция не загружена - тут будет NPE
  130.  
  131. // И не забыть SaveChanges()
  132. }
  133.  
  134. public void Disconnect(DbContext ctx, int ida, int idb) {
  135. var a = new A { Id = ida };
  136. var b = new B { Id = idb };
  137.  
  138. // Если сущности c указанными ключами уже загружены в контекст - тут будет ошибка
  139. // Постарайтесь, чтобы так не случалось (лучший способ - каждый раз создавать новый контекст)
  140. ctx.Entry(a).State = EntityState.Unchanged;
  141. ctx.Entry(b).State = EntityState.Unchanged;
  142.  
  143. ctx.Entry(a).Collection(_ => _.Bs).Load();
  144. a.Bs.Remove(b);
  145. ctx.SaveChanges();
  146.  
  147. // Чистить контекст тут уже бесполезно. Бросайте его и создавайте новый.
  148. }
  149.  
  150. a.Bs // оно само загрузится
  151.  
  152. ctx.Entry(a).Collection(_ => _.Bs).Load()
  153. a.Bs // теперь загружено
  154.  
  155. var q = (from a in ctx.As
  156. where a.Id = 5
  157. select a).Include(a => a.Bs)
  158.  
  159. var a = new A { Id = ida };
  160. ctx.Entry(a).State = EntityState.Unchanged;
  161. ctx.Entry(a).Collection(_ => _.Bs).Load();
  162. //теперь a.Bs не пусто
  163.  
  164. public class A {
  165. public int Id { get; set; }
  166. public virtual ICollection<ABLink> ABLinks { get; set; }
  167. }
  168.  
  169. public class B {
  170. public int Id { get; set; }
  171. public virtual ICollection<ABLink> ABLinks { get; set; }
  172. }
  173.  
  174. public class ABLink {
  175. [Key]
  176. public int AId { get; set; }
  177. [ForeignKey("AId")]
  178. public virtual A A { get; set; }
  179.  
  180. [Key]
  181. public int BId { get; set; }
  182. [ForeignKey("BId")]
  183. public virtual B B { get; set; }
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement