Anna Sałacińska 1 Napisano 13 Lipca 2023 Udostępnij Napisano 13 Lipca 2023 w [sdk]Dodanie asortymentu do modelu Dzień dobry, w jaki sposób dodaje się asortyment do modelu? Mam coś takiego IModele modele = sfera.PodajObiektTypu<IModele>(); IAsortymenty asortymenty = sfera.PodajObiektTypu<IAsortymenty>(); var mmodel = modele.Dane.Wszystkie().Where(m => m.Sygnatura.PelnaSygnatura == "l100").First(); using (IModel model = modele.Znajdz(mmodel)) { model.Dane.Asortymenty.Add(asortymenty.Dane.Wszystkie().Where(w => w.Id == 100030).FirstOrDefault()); model.Zapisz(); model.WypiszBledy(); } I to powoduje wyjątek na linijce model.Dane.Asortymenty.Add Cytat InsERT.Mox.DataAccess.UnsponsoredModificationException: „Modyfikacja pola Asortymenty encji Model nie powiodła się, ponieważ albo encja nie została przyłączona do obiektu kontrolującego modyfikację danych (biznesowego), albo ten, do którego jest przyłączona nie pozwala na zmianę tego konkretnego pola.” Asortyment o id 100030 oczywiście istnieje. Link to postu
Rozwiązanie Mateusz Matuszewski 91 Napisano 14 Lipca 2023 Rozwiązanie Udostępnij Napisano 14 Lipca 2023 w [sdk]Dodanie asortymentu do modelu Asortyment do modelu można przypisać tylko od strony asortymentu: IModele modele = sfera.PodajObiektTypu<IModele>(); IAsortymenty asortymenty = sfera.PodajObiektTypu<IAsortymenty>(); Asortyment asortyment = asortymenty.Dane.Wszystkie().Where(w => w.Id == 100030).First(); Model model = modele.Dane.Wszystkie().Where(m => m.Sygnatura.PelnaSygnatura == "l100").First(); using (IAsortyment asortymentBO = asortymenty.Znajdz(asortyment)) { asortymentBO.Dane.Model = model; // przypisanie modelu spowodowało ustawienie domyślnych cech, możemy je teraz zmienić WlasciwoscAsortymentu kolorAsortymentu = asortymentBO.Dane.WlasciwosciAsortymentu.First(w => w.Wlasciwosc.Nazwa == "Kolor"); Wlasciwosc kolor = kolorAsortymentu.Wlasciwosc; CechaAsortymentu kolorCzarny = kolor.CechyAsortymentu.First(c => c.Nazwa == "Czarny"); kolorAsortymentu.CechyAsortymentu.Clear(); kolorAsortymentu.CechyAsortymentu.Add(kolorCzarny); asortymentBO.Zapisz(); } Link to postu
Anna Sałacińska 1 Napisano 17 Lipca 2023 Autor Udostępnij Napisano 17 Lipca 2023 w [sdk]Dodanie asortymentu do modelu Próbowałam w ta stronę ale uznałam że skoro model jest nullem to pewnie trzeba jakoś od strony modelu. A w jaki sposób przypisywać cechy dla nowego asortymentu? Bo ta metoda coś nie działa Cytat WlasciwoscAsortymentu kolorAsortymentu = asortyment.Dane.WlasciwosciAsortymentu.First(w => w.Wlasciwosc.Nazwa == "Kolor"); System.InvalidOperationException: „Sekwencja nie zawiera pasującego elementu.” Próbowałam tak jak przy dodawaniu cech modelu ale coś tu nie działa using (IAsortyment asortyment = asortymenty.Utworz()) { asortyment.Dane.Nazwa = "A1 Rozmiar: XS Kolor: Czarny"; asortyment.WypelnijNaPodstawieSzablonu(szablon.DaneDomyslne.Towar); asortyment.AutoSymbol(); asortyment.Dane.Model = model.Dane; if (!asortyment.Zapisz()) { asortyment.WypiszBledy(); } asortyment.Dane.WlasciwosciAsortymentu.Clear(); { var wl = new WlasciwoscAsortymentu(); asortyment.Dane.WlasciwosciAsortymentu.Add(wl); wl.LP = 1; wl.Wlasciwosc = wlasciwosci.Dane.Wszystkie().Where(w => w.Id == 100001).FirstOrDefault(); wl.CechyAsortymentu.Add(cechy.Dane.Wszystkie().Where((w) => w.Id == 100011).FirstOrDefault()); } { var wl = new WlasciwoscAsortymentu(); asortyment.Dane.WlasciwosciAsortymentu.Add(wl); wl.LP = 2; wl.Wlasciwosc = wlasciwosci.Dane.Wszystkie().Where(w => w.Id == 100000).FirstOrDefault(); wl.CechyAsortymentu.Add(cechy.Dane.Wszystkie().Where((w) => w.Id == 100008).FirstOrDefault()); } if (!asortyment.Zapisz()) { asortyment.WypiszBledy(); } } Drugi tworze tak samo tylko ma inne cechy { var wl = new WlasciwoscAsortymentu(); asortyment.Dane.WlasciwosciAsortymentu.Add(wl); wl.LP = 1; wl.Wlasciwosc = wlasciwosci.Dane.Wszystkie().Where(w => w.Id == 100001).FirstOrDefault(); wl.CechyAsortymentu.Add(cechy.Dane.Wszystkie().Where((w) => w.Id == 100011).FirstOrDefault()); } { var wl = new WlasciwoscAsortymentu(); asortyment.Dane.WlasciwosciAsortymentu.Add(wl); wl.LP = 2; wl.Wlasciwosc = wlasciwosci.Dane.Wszystkie().Where(w => w.Id == 100000).FirstOrDefault(); wl.CechyAsortymentu.Add(cechy.Dane.Wszystkie().Where((w) => w.Id == 100010).FirstOrDefault()); } Link to postu
Mateusz Matuszewski 91 Napisano 17 Lipca 2023 Udostępnij Napisano 17 Lipca 2023 w [sdk]Dodanie asortymentu do modelu (edytowane) Cytat WlasciwoscAsortymentu kolorAsortymentu = asortyment.Dane.WlasciwosciAsortymentu.First(w => w.Wlasciwosc.Nazwa == "Kolor"); System.InvalidOperationException: „Sekwencja nie zawiera pasującego elementu.” Być może właściwość nie ma nazwy "Kolor", lecz ma taki symbol? Czy wyszukanie właściwości po identyfikatorze zamiast po nazwie również jej nie znajduje? Cytat Drugi tworze tak samo tylko ma inne cechy Proszę spróbować jeszcze po zmianie cech wywołać na metodę asortyment.WygenerujNazweWariantu(). Edytowane 17 Lipca 2023 przez Mateusz Matuszewski literówka Link to postu
Anna Sałacińska 1 Napisano 18 Lipca 2023 Autor Udostępnij Napisano 18 Lipca 2023 w [sdk]Dodanie asortymentu do modelu Wygeneruj nazwę pomogło, natomiast z tym przypisywaniem cech jest coś nie tak, raz zadziałało i miałam pisać że obie wersje działają ale teraz po kilku próbach nagle przestało działać i jest ten sam błąd. Czy z tym sposobem gdzie robię new WlasciwoscAsortymentu() jest coś nie tak , czy może tak zostać? Link to postu
Mateusz Matuszewski 91 Napisano 19 Lipca 2023 Udostępnij Napisano 19 Lipca 2023 w [sdk]Dodanie asortymentu do modelu Pani sposób powinien być OK. Dziwi mnie natomiast fakt, że przestaje działać, ponieważ przy ustawianiu modelu zawsze przepisywane są wszystkie jego właściwości do asortymentu. Mogłaby Pani sprawdzić czy w kolekcji WlasciwosciAsortymentu znajdują się wszystkie właściwości modelu w momencie, gdy przestaje działać? A może jakaś cecha nie jest przypisana do właściwości (w słowniku Właściwości) i dlatego nie działa? Link to postu
Anna Sałacińska 1 Napisano 27 Lipca 2023 Autor Udostępnij Napisano 27 Lipca 2023 w [sdk]Dodanie asortymentu do modelu Szczerze to nie wiem o co chodzi ale teraz bez wprowadzania zmian w kodzie działa. Chociaż mam wrażenie że to przestawało działać po większej ilości prób i po restarcie komputera znowu działo Link to postu
Polecane posty