Skocz do zawartości

Jak dodać przez api całkowicie model produktu ?

Polecane posty

O ile początek jest łatwu to nie wiem co dalej z właciwościami i cechami.

 

using (modelS = menadzerModeli.Utworz())
{

	modelS.Dane.Opis = produkt.Opis;
	modelS.Dane.Nazwa = produkt.Nazwa;
	modelS.Dane.Sygnatura.PelnaSygnatura = produkt.Symbol;
	modelS.Zapisz();
}

Nie ma metod dodających właściwości.  Jak w ogole dodać cechy i produkty do wcześniej utowrzonego modelu ?

 

Edytowane przez Dariusz Żukowski
Link to postu

Właściwości do modelu można dodać w taki sposób:

Wlasciwosc wlasciwosc;
IModel modelBO;

var wlasciwoscModelu = new WlasciwoscModelu();
modelBO.Dane.WlasciwosciModelu.Add(wlasciwoscModelu);
wlasciwoscModelu.Wlasciwosc = wlasciwosc;

 

Asortyment do modelu najłatwiej dodać od strony samego asortymentu:

Model model;
IAsortyment asortymentBO;

asortyment.Dane.Model = model;

foreach (var wlasciwosc in asortyment.Dane.WlasciwosciAsortymentu)
{
	wlasciwosc.CechyAsortymentu.Clear();
	wlasciwosc.CechyAsortymentu.Add(wlasciwosc.Wlasciwosc.CechyAsortymentu.First());
}

 

Link to postu

Mam coś takiego :

using (modelS = menadzerModeli.Utworz())
                                    {
                                        modelS.Dane.Opis = produkt.Opis;
                                        modelS.Dane.Nazwa = produkt.Nazwa;
                                        modelS.Dane.Sygnatura.PelnaSygnatura = produkt.Symbol;
                                        int lp = 1;

                                        foreach (var add in xAdds)
                                        {
                                            var newProp = wlasciwosci.Utworz();
                                            newProp.Dane.Nazwa = add.Name;
                                            newProp.Dane.Symbol = add.SKU;
                                            newProp.Dane.CechyAsortymentu.AddRange(add.CechyNexo);
                                            newProp.Zapisz();
                                            
                                            var currentProp = wlasciwosci.Dane.Wszystkie().Where(a => a.Nazwa == add.Name).FirstOrDefault();

                                            modelS.Dane.WlasciwosciModelu.Add(new WlasciwoscModelu
                                            {
                                                LP = lp,
                                                Unikalna = true,
                                                Wlasciwosc = currentProp,
                                                Wymagana = true
                                            });

                                            lp++;
                                        }

                                        modelS.Zapisz();
                                    }

Jednak w linii 

newProp.Dane.CechyAsortymentu.AddRange(add.CechyNexo);

wyskakuje błąd o braku możliwości aktualizacji obiektu biznesowego. Obiekt add.CechyNexo to po prostu zbiór cech które chce dodać do Właściwości.

 

Link to postu

Proszę spróbować dodać właściwość do cechy asortymentu:

var newProp = wlasciwosci.Utworz();
newProp.Dane.Nazwa = add.Name;
newProp.Dane.Symbol = add.SKU;
newProp.Zapisz();

foreach (var cecha in add.CechyNexo)
{
	using (var cechaBO = cechy.Znajdz(cecha))
	{
		cechaBO.Dane.Wlasciwosci.Add(newProp.Dane);
		cechaBO.Zapisz();
	}
}

 

Dodam jeszcze, że zmiana pól (również poprzez inicjalizatory) na nowych encjach przed przyłączeniem ich do obiektu biznesowego może skutkować niespodziewanymi problemami. Zamiast konstrukcji:

modelS.Dane.WlasciwosciModelu.Add(new WlasciwoscModelu
{
	LP = lp,
	Unikalna = true,
	Wlasciwosc = currentProp,
	Wymagana = true
});

proszę użyć:

var wlasciwoscModelu = new WlasciwoscModelu();
modelS.Dane.WlasciwosciModelu.Add(wlasciwoscModelu); //tutaj wlasciwoscModelu jest przyłączana do obiektu biznesowego modelu.
wlasciwoscModelu.LP = lp;
wlasciwoscModelu.Unikalna = true;
wlasciwoscModelu.Wlasciwosc = currentProp;
wlasciwoscModelu.Wymagana = true;

 

Link to postu
×
×
  • Dodaj nową pozycję...