public ActionResult Create(ObservableEntityViewModel vm)
 {
     if (ModelState.IsValid)
     {
         vm.Initialise(db);
         vm.PrepareSave();
         db.ObservableEntities.Add(vm.Model);
         db.SaveChanges();
         return RedirectToAction("Index");
     }
     vm.PopulateSelectLists();
     return View(vm);
 }
 // GET: ObservableEntities/Edit/5
 public ActionResult Edit(int? id)
 {
     if (id == null)
     {
         return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
     }
     ObservableEntity observableEntity = db.ObservableEntities.Find(id);
     if (observableEntity == null)
     {
         return HttpNotFound();
     }
     var vm = new ObservableEntityViewModel(db, observableEntity);
     return View(vm);
 }
 // GET: ObservableEntities/Create
 public ActionResult Create()
 {
     var vm = new ObservableEntityViewModel(db, null);
     return View(vm);
 }
        public ActionResult Edit(ObservableEntityViewModel vm)
        {
            if (ModelState.IsValid)
            {
                var item = db.Entry(vm.Model);
                item.State = EntityState.Modified;
                vm.Initialise(db);

                item.Collection("ObservableEntityTypes").Load();

                vm.PrepareSave();
                //var existingObservableEntity = db.ObservableEntities.Find(observableEntity.ObservableEntityID);
                //existingObservableEntity.Name = observableEntity.Name;
                //existingObservableEntity.ScientificName = observableEntity.ScientificName;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            vm.PopulateSelectLists();

            return View(vm);
        }