Guest User

Untitled

a guest
Jul 20th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.62 KB | None | 0 0
  1. Vendors
  2. -------------------
  3. VendorID (PK)
  4. Name
  5.  
  6. Regions
  7. -------------------
  8. RegionID (PK)
  9. Name
  10.  
  11. VendorRegions
  12. -------------------
  13. VendorID (PK)
  14. RegionID (PK)
  15.  
  16. public class VendorsController : Controller
  17. {
  18. readonly IVendorsRepository _vendorsRepository;
  19. readonly IRegionsRepository _regionsRepository;
  20.  
  21. public VendorsController()
  22. {
  23. _vendorsRepository = new SqlVendorsRepository();
  24. _regionsRepository = new SqlRegionsRepository();
  25. }
  26.  
  27. [HttpPost]
  28. public ActionResult Create(VendorViewModel viewModel, string[] Regions)
  29. {
  30. var vendor = new Vendor();
  31. TryUpdateModel(vendor);
  32.  
  33. if (ModelState.IsValid)
  34. {
  35. vendor.Regions.Clear();
  36. foreach (var regionId in Regions)
  37. {
  38. vendor.Regions.Add(_regionsRepository.GetRegion(Int32.Parse(regionId)));
  39. }
  40.  
  41. _vendorsRepository.SaveVendor(vendor);
  42. return RedirectToAction("Index");
  43. }
  44.  
  45. return View(viewModel); // validation error, so redisplay same view
  46. }
  47. }
  48.  
  49. public class SqlVendorsRepository : IVendorsRepository
  50. {
  51. private readonly MyDBEntities _entities;
  52.  
  53. public SqlVendorsRepository()
  54. {
  55. _entities = new MyDBEntities();
  56. }
  57.  
  58.  
  59. public void SaveVendor(Vendor vendor)
  60. {
  61. // If it's a new vendor, just attach it to the DataContext
  62. if (vendor.VendorID == 0)
  63. _entities.Vendors.Context.AddObject("Vendors", vendor); // ERROR HERE
  64. else if (vendor.EntityState == EntityState.Detached)
  65. {
  66. // We're updating an existing vendor, but it's not attached to this data context, so attach it and detect the changes
  67. _entities.Vendors.Context.Attach(vendor);
  68. _entities.Vendors.Context.Refresh(System.Data.Objects.RefreshMode.ClientWins, vendor);
  69. }
  70. _entities.Vendors.Context.SaveChanges();
  71. }
  72. }
  73.  
  74. public class SqlRegionsRepository : IRegionsRepository
  75. {
  76. private readonly MyDBEntities _entities;
  77.  
  78. public SqlRegionsRepository()
  79. {
  80. _entities = new MyDBEntities();
  81. }
  82.  
  83.  
  84. public IQueryable<Region> Regions
  85. {
  86. get { return _entities.Regions.AsQueryable(); }
  87. }
  88.  
  89.  
  90. public Region GetRegion(int id)
  91. {
  92. return Regions.FirstOrDefault(st => st.RegionID == id);
  93. }
  94. }
  95.  
  96. MyDBEntities entities = new MyDBEntities();
  97. _vendorsRepository = new SqlVendorsRepository(entities);
  98. _regionsRepository = new SqlRegionsRepository(entities);
  99.  
  100. MyDBEntities entities = new MyDBEntities();
  101. _vendorsRepository = new SqlVendorsRepository(entities);
  102. _regionsRepository = new SqlRegionsRepository(entities);
Add Comment
Please, Sign In to add comment