NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s podporou uplatnění od 0 Kč. Více informací.
Avatar
ratpile
Člen
Avatar
ratpile:1.5.2016 23:34
public void Like(int id, AspNetUsers aspNetUser, Reviews reviewLike)
       {


           if (ModelState.IsValid)
           {

               var getUserId = _entities.Reviews.Find(id);  //získá id recenze
               aspNetUser.Id = getUserId.User_Id;  //přiřadí Id uživatele k User_Id pisatele recenze
               aspNetUser.Points = 100;  //přidělí body


               _entities.Entry(aspNetUser).State = EntityState.Modified;

               _entities.SaveChanges(); //error
           }


       }

Zdravím, prosím o radu.
Předešlý kód by měl zjistit Id recenze, následně přiřadit uživatele ke své recenzi a přidat mu pár bodů.
Vše končí vždy errorem nebo žádnou odezvou.

Díky moc za každou radu ;)

 
Odpovědět
1.5.2016 23:34
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na ratpile
Jan Vargovský:1.5.2016 23:48

Ten error ti většinou řekne co je blbě, jestliže mu nerozumíš ty, tak nám ho tu aspoň pošli.

 
Nahoru Odpovědět
1.5.2016 23:48
Avatar
ratpile
Člen
Avatar
Odpovídá na Jan Vargovský
ratpile:2.5.2016 17:30
Reviews getReviewId = _entities.Reviews.Find(id);
               AspNetUsers getUserId = _entities.AspNetUsers.Find(getReviewId.User_Id);
               getUserId.Points = 10;

zkouším teď takto

nejdřív potřebuju najít recenzi, pak najít uživatele kterej ji napsal (uživatel je cizím klíčem u každé recenze) a pak mu přidat nějaký body

error to hlásí :

Odkaz na objekt není nastaven na instanci objektu.
a svítí řádek getUserId.Points = 10;

 
Nahoru Odpovědět
2.5.2016 17:30
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na ratpile
Jan Vargovský:2.5.2016 18:54

Nenašlo to usera a je null ...

 
Nahoru Odpovědět
2.5.2016 18:54
Avatar
LacoS.
Člen
Avatar
LacoS.:2.5.2016 19:30

Na hladanie chyb odporucam pouzivat try/catch v podprogramoch;
Vypise Ti to chybu, a ak ani z vypisu nechapes, co to znamena, pomoze Ti google alebo uzivatelia tuto...

// napr:
public void fxABCD(dajake_parametre_ak_treba)
{
        try
        {
                // cela Tvoja povodna fcia ...
        }
        catch (Exception ex)
        {
                // vypises si toto: ex.ToString())
                // pozor: ak ide program tadialto, tak vsetko v 'try' sa anuluje ... nic sa nevykona.
                // takze opatrne...
        }
}

... tento priklad bol pre C#, ale Ty tam mas VB, takze si to uprav 'na svoj obraz'

 
Nahoru Odpovědět
2.5.2016 19:30
Avatar
Odpovídá na LacoS.
Michal Štěpánek:2.5.2016 19:47

Kde jsi tam viděl VB? Já v původním dotazu vidím C#

Nahoru Odpovědět
2.5.2016 19:47
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
ratpile
Člen
Avatar
Odpovídá na Jan Vargovský
ratpile:3.5.2016 16:38

jasně, to si nějak dokážu vydedukovat

mě spíš zajímalo jestli vidíte něco blbě na tom fragmentu kódu

 
Nahoru Odpovědět
3.5.2016 16:38
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na ratpile
Jan Vargovský:3.5.2016 19:29

V tom kódu není špatného nic. Pošli co je uvnitř

_entities.AspNetUsers.Find(getReviewId.User_Id)
 
Nahoru Odpovědět
3.5.2016 19:29
Avatar
ratpile
Člen
Avatar
Odpovídá na Jan Vargovský
ratpile:3.5.2016 19:54

Tak už to funguje, chyba byla ve view namísto new { id = review.Id }); jsem měl new { id = model.Id });
V uvozovkách překlep.

díky všem

mám ještě jeden obecný dotázek

pokud bych chtěl ukládat, například u každé jedné recenze, který uživatel jí olikoval, jakou formou je to ta "best practice"?

 
Nahoru Odpovědět
3.5.2016 19:54
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.