Pobranie ID zapisanego obiektu

0

Cześć.

Mam akcję kontrolera, która odpowiedzialna jest za przekazanie view modelu klasy Product do serwisu. W serwisie metodę, która operuje na ORM i dodaje encje do dbcontext.

        public virtual ActionResult Create(ProductViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                productService.AddProduct(viewModel);
                return RedirectToAction(MVC.Products.ActionNames.List);
            }

            return View(viewModel);
        }
        public void AddProduct(ProductViewModel viewModel)
        {
            var product = Mapper.Map<Product>(viewModel);

            context.Products.Add(product);
            context.SaveChanges();
        }

Chciałbym uzyskać id zapisanego do bazy obiektu, aby móc przekierować użytkownika do innej akcji kontrolera z wykorzystaniem zapisanego obiektu. W internecie natknął się na rozwiązania, które działają na takie zasadzie, że zapis do bazy następuje bezpośrednio w kontrolerze, dzięki czemu jest dostęp do obiektu z uzyskanym id. Natomiast nie bardzo wiem, jak rozegrać to w sytuacji, kiedy zapisuję obiekt w serwisie.
Rozwiązanie, które mi się nasuwa, to od razu zwracanie view modelu przez metodę serwisu zapisującą obiekt do bazy, w zależności od przekazanego parametru? Ale nie sądzę, aby to było w porządku.

2

Nie ma znaczenia czy w kontrolerze czy w innej klasie to i tak będziesz miał id. po prostu po savechanges zwróć Product.Id jak je potrzebujesz. Więc metoda addProduct powinna ewentualnie zwracać int.

1 użytkowników online, w tym zalogowanych: 0, gości: 1