Advertisement
Guest User

Untitled

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