Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Vendors
- -------------------
- VendorID (PK)
- Name
- Regions
- -------------------
- RegionID (PK)
- Name
- VendorRegions
- -------------------
- VendorID (PK)
- RegionID (PK)
- public class VendorsController : Controller
- {
- readonly IVendorsRepository _vendorsRepository;
- readonly IRegionsRepository _regionsRepository;
- public VendorsController()
- {
- _vendorsRepository = new SqlVendorsRepository();
- _regionsRepository = new SqlRegionsRepository();
- }
- [HttpPost]
- public ActionResult Create(VendorViewModel viewModel, string[] Regions)
- {
- var vendor = new Vendor();
- TryUpdateModel(vendor);
- if (ModelState.IsValid)
- {
- vendor.Regions.Clear();
- foreach (var regionId in Regions)
- {
- vendor.Regions.Add(_regionsRepository.GetRegion(Int32.Parse(regionId)));
- }
- _vendorsRepository.SaveVendor(vendor);
- return RedirectToAction("Index");
- }
- return View(viewModel); // validation error, so redisplay same view
- }
- }
- public class SqlVendorsRepository : IVendorsRepository
- {
- private readonly MyDBEntities _entities;
- public SqlVendorsRepository()
- {
- _entities = new MyDBEntities();
- }
- public void SaveVendor(Vendor vendor)
- {
- // If it's a new vendor, just attach it to the DataContext
- if (vendor.VendorID == 0)
- _entities.Vendors.Context.AddObject("Vendors", vendor); // ERROR HERE
- else if (vendor.EntityState == EntityState.Detached)
- {
- // We're updating an existing vendor, but it's not attached to this data context, so attach it and detect the changes
- _entities.Vendors.Context.Attach(vendor);
- _entities.Vendors.Context.Refresh(System.Data.Objects.RefreshMode.ClientWins, vendor);
- }
- _entities.Vendors.Context.SaveChanges();
- }
- }
- public class SqlRegionsRepository : IRegionsRepository
- {
- private readonly MyDBEntities _entities;
- public SqlRegionsRepository()
- {
- _entities = new MyDBEntities();
- }
- public IQueryable<Region> Regions
- {
- get { return _entities.Regions.AsQueryable(); }
- }
- public Region GetRegion(int id)
- {
- return Regions.FirstOrDefault(st => st.RegionID == id);
- }
- }
- MyDBEntities entities = new MyDBEntities();
- _vendorsRepository = new SqlVendorsRepository(entities);
- _regionsRepository = new SqlRegionsRepository(entities);
- MyDBEntities entities = new MyDBEntities();
- _vendorsRepository = new SqlVendorsRepository(entities);
- _regionsRepository = new SqlRegionsRepository(entities);
Add Comment
Please, Sign In to add comment