Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

ASP.NET i ADO.NET entity problem

[es] :: .NET :: ASP.NET :: ASP.NET i ADO.NET entity problem

[ Pregleda: 2695 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

milos_r
Beograd

Član broj: 49289
Poruke: 38
*.static.isp.telekom.rs.



Profil

icon ASP.NET i ADO.NET entity problem03.08.2012. u 13:12 - pre 141 meseci
Imam pitanje za poznavaoce navadenih tehnologija u naslovu,
naime muci me sledeca stvar. Mapirao sma bazu sa edmx fajlom i pristupam podacima preko LINQ to entity. Napravio sam jednu malu formu za promenu sifre korisnika sistema. jednostavna forma radi super i provereno u bazi sifra se promeni. Ali dok ne ugasim visual studio i ponovo pokrenem celu soluciju on u keshu konteksta i dalje ipak drzi staru sifru i moze se njom pristupati. Tj. interesuje me kako naterati kontekst da nakon promene sifre izbaci iz lokalnopg kesha staru vrednost.
 
Odgovor na temu

Dejan Carić
Oslo, Norway

Član broj: 230976
Poruke: 232
82.117.199.*

Sajt: www.dcaric.com


+26 Profil

icon Re: ASP.NET i ADO.NET entity problem03.08.2012. u 14:05 - pre 141 meseci
Kako radiš snimanje?
Code:
public void Save(User user)
{
    using (var db = new DbContext())
    {
        db.Users.Add(user);
        db.SaveChanges();
    }
}

 
Odgovor na temu

milos_r
Beograd

Član broj: 49289
Poruke: 38
*.static.isp.telekom.rs.



Profil

icon Re: ASP.NET i ADO.NET entity problem03.08.2012. u 14:23 - pre 141 meseci
Citat:
Dejan Carić:
Kako radiš snimanje?
Code:
public void Save(User user)
{
    using (var db = new DbContext())
    {
        db.Users.Add(user);
        db.SaveChanges();
    }
}


Code:


            var testNoveBazeEntities = new NovaBazaVer2Entities();

            var trenutnoUlogovani = (from korisnik in testNoveBazeEntities.TBL_ZAPOSLENI
                                                  where korisnik.KORISNICKO_IME == Sesija.Zaposleni.KORISNICKO_IME
                                                  select korisnik).SingleOrDefault();
            if (trenutnoUlogovani != null)
            {
                trenutnoUlogovani.SIFRAHASHOVANA = Sifra.HashujSifru(novaSifra1);
            }
                    
            try
            {
                testNoveBazeEntities.SaveChanges();
            }
            catch (OptimisticConcurrencyException)
            {
                testNoveBazeEntities.Refresh(RefreshMode.ClientWins, trenutnoUlogovani);
                testNoveBazeEntities.SaveChanges();
            }

            Sesija.Zaposleni = null;
            Session.RemoveAll();
            Page.Response.Redirect("~/Login.aspx"); 


Ovaj kod meni dobro radi ja odem odmah iza ovog poziva direktno u bazu i vidim da je sifra zaista promenjena. problem je sto ova login stranica na koju se redirektuje nakon zamene i dalje cita staru sifru.

ovo je kod za proveru sifre
Code:


private static bool ProveriSifru(string unetaSifra)
        {
            var hashUneteSifre = HashujSifru(unetaSifra);
            if (hashUneteSifre.Length != _zaposleni.SIFRAHASHOVANA.Length)
                return false;
            return !hashUneteSifre.Where((t, i) => t != _zaposleni.SIFRAHASHOVANA[i]).Any();
        }
 
Odgovor na temu

Dejan Carić
Oslo, Norway

Član broj: 230976
Poruke: 232
82.117.199.*

Sajt: www.dcaric.com


+26 Profil

icon Re: ASP.NET i ADO.NET entity problem03.08.2012. u 14:35 - pre 141 meseci
Šta se dešava kada var testNoveBazeEntities = new NovaBazaVer2Entities(); staviš unutar using bloka?

Malo je teško da se isprati šta ta metoda sve radi. Probaj da metodu iscepkaš u više metoda / slojeva.

1. Dohvatanje i snimanje korisnika
2. Rad sa sesijom
3. Redirekcija korisnika

edit

Onda lako možeš videti da li se stara šifra čuva u DB context-u ili sesiji....

[Ovu poruku je menjao Dejan Carić dana 03.08.2012. u 15:49 GMT+1]
 
Odgovor na temu

milos_r
Beograd

Član broj: 49289
Poruke: 38
*.static.isp.telekom.rs.



Profil

icon Re: ASP.NET i ADO.NET entity problem03.08.2012. u 14:56 - pre 141 meseci
Citat:
Dejan Carić:
Šta se dešava kada var testNoveBazeEntities = new NovaBazaVer2Entities(); staviš unutar using bloka?

Malo je teško da se isprati šta ta metoda sve radi. Probaj da metodu iscepkaš u više metoda / slojeva.

1. Dohvatanje i snimanje korisnika
2. Rad sa sesijom
3. Redirekcija korisnika

edit

Onda lako možeš videti da li se stara šifra čuva u DB context-u ili sesiji....

[Ovu poruku je menjao Dejan Carić dana 03.08.2012. u 15:49 GMT+1]


Pa zapravo nije problem u tim metodama koje unose novu sifru u bazu. Taj deo super radi. Meni je problem kako da nateram login stranicu da povuce novu sifru iz baze. Tu je neka fora sa ovim lazyloading-om ili sa nekim refresh-om podataka pa sam se nadao da neko zna to kako da napravim.
 
Odgovor na temu

ravni

Član broj: 8894
Poruke: 373



+15 Profil

icon Re: ASP.NET i ADO.NET entity problem06.08.2012. u 10:08 - pre 141 meseci
Tipujem da je _zaposleni problem, tj da se taj objekat ne osvezi.

Ovo
Code:
if (hashUneteSifre.Length != _zaposleni.SIFRAHASHOVANA.Length)
                return false;
            return !hashUneteSifre.Where((t, i) => t != _zaposleni.SIFRAHASHOVANA[i]).Any();
je cudan nacin da se napise
Code:
return hashUneteSifre == _zaposleni.SIFRAHASHOVANA
Zar ne?
 
Odgovor na temu

milos_r
Beograd

Član broj: 49289
Poruke: 38
195.252.127.*



Profil

icon Re: ASP.NET i ADO.NET entity problem06.08.2012. u 14:13 - pre 141 meseci
Citat:
ravni:
Tipujem da je _zaposleni problem, tj da se taj objekat ne osvezi.

Ovo
Code:
if (hashUneteSifre.Length != _zaposleni.SIFRAHASHOVANA.Length)
                return false;
            return !hashUneteSifre.Where((t, i) => t != _zaposleni.SIFRAHASHOVANA[i]).Any();
je cudan nacin da se napise
Code:
return hashUneteSifre == _zaposleni.SIFRAHASHOVANA
Zar ne?


Pa da, u pravu si, sto moze jednostavno kad moze komplikovano. Elem resio sam problem sa pozivom sledece funkcije
Code:

Baza.Refresh(RefreshMode.ClientWins, _zaposleni);


Nego sada imam drugi problem koji pokusavam da resim. U pitanju je punjenje grid-a sa podacima iz ObjectDataSource-a. ObjectDataSource je podesen tako da podatke uzima iz klase tj. metode SelectMethod="UzmiListu". U principu to sve radi ok osim jedne male stvari. Ne povlace se podaci iz vezane tabele samo iz one koja se direktno instancira LINQ pozivom.

Code:


[DataObjectMethod(DataObjectMethodType.Select, true)]
        public List<ZaposleniUzmiListuRezultata> UzmiListu(int? radnajedinicaId, int? lokacijaId, string tipSortiranja, int startRowIndex, int maximumRows)
        {
            using (var db = new NovaBazaVer2Entities())
            {
                //Krece se od baznog query-ja
                IQueryable<TBL_ZAPOSLENI> zaposleniQuery = from p in db.TBL_ZAPOSLENI.Include("TBL_RADNA_JEDINICA")
                                                           select p;

                //rezultate prebacujemo u malu pripremljenu klasu specijalno za ove svrhe
                return zaposleniQuery.Select(p => new ZaposleniCustomKlasa
                {
                    ZaposleniID = p.ZAPOSLENIID,
                    Ime = p.IME,
                    Prezime = p.PREZIME,
                    RadnoMesto = p.SLUZBENI_NAZIV_RADNOG_MESTA,
                    PoslovnaJedinica = p.TBL_RADNA_JEDINICA.TBL_TIP_RADNE_JEDINICE.NAZIV_TIPA + p.TBL_RADNA_JEDINICA.NAZIV_RADNE_JEDINICE,
                    LokacijaradnogMesta = p.TBL_LOKACIJA_OSNOVNI_PODACI.NAZIV_LOKACIJE
                }).ToList();
            }
        }


PoslovnaJedinica = p.TBL_RADNA_JEDINICA.TBL_TIP_RADNE_JEDINICE.NAZIV_TIPA + p.TBL_RADNA_JEDINICA.NAZIV_RADNE_JEDINICE,
ovo je deo koda koji mi pravi problem. Ne znam kako da nateram ovaj gornji poziv da povuce podatke iz ove dve povezane tabele.
 
Odgovor na temu

milos_r
Beograd

Član broj: 49289
Poruke: 38
*.static.isp.telekom.rs.



Profil

icon Re: ASP.NET i ADO.NET entity problem07.08.2012. u 14:43 - pre 141 meseci
Ok resen je i ovaj poslednji problem sa duplom for petljom :D
 
Odgovor na temu

[es] :: .NET :: ASP.NET :: ASP.NET i ADO.NET entity problem

[ Pregleda: 2695 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.