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

MVC App bez EF u modelima

[es] :: .NET :: ASP.NET :: MVC App bez EF u modelima

[ Pregleda: 3537 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

alfa-pro
Pancevo

Član broj: 241818
Poruke: 476
109.122.107.*



+7 Profil

icon MVC App bez EF u modelima03.08.2016. u 21:13 - pre 93 meseci
Drustvo primoren sam da radim app bez koriscenja Entity Frameworka u asp.net mvc-u.
Sto se mene tice ja se nebi odvajao od EF, pokusavao sam da ubedim ali neide.

Na koju foru mogu da zadrzim modele ali bez EF?

Neka moja zamisao je da koristim klasicnu System.Data.SqlClient assembly
Napravim npr u model diru klasu Blog koja bi mi bila model sa aksesorima nrp Title, Text, Created, Modifed da kazemo simple.
Da napravim BlogRepository sto bi bilo kao u EF Context klasa gde bi vracao upite (FintAll, Find, Insert, Update).

Sve u svemu ovaj moj primer koliko sam ja predpostavio ne pije vodu i da je ovo za kantu ako ovako uradim.

Mislim totalno mi sada ovo novo nikada nisam radio bez EF sem u web page projektima tu sam koristion WebMatrix.Data assemply i to sljaka super, ali de WebMatrix.Data da koristim u MVC malo bzv a?

Moze neki primer ili da me neko usmeri kako ovo najbolje uraditi a i da moze da se radi unit testing.

Hvala unapred
Kada vidjamo uvek ista lica, na kraju ona postaju deo našeg života. A kada postanu
deo našeg života,
onda žele i da nam ga izmene. I ako ne bude po njihovom, nije im pravo. Jer, svaki
čovek ima tačnu predstavu kako bi trebalo da živimo svoj život. A nikad nemaju pojma
kako treba da prožive sopstveni život.
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: MVC App bez EF u modelima03.08.2016. u 22:01 - pre 93 meseci
Da ne zalazimo u to zasto ne mozes koristiti EF, mozes bez problema koristiti SqlConnection/Command/Reader.
Svodi ti se na to da napravis instancu konekcije, komande, povezes ih, dodas string sa query-em u komandu i dodas parametre (uvek koristi parametre, nemoj sastavljati query nadovezivanjem stringova), otvoris konekciju, izvrsis komandu i iscitas vrednost (ako je select query), zatvoris konekciju.
Mozes naci primer na netu.

E sad, imaces, neke modele koji ti preslikavaju tabele ili tacnije, koje preslikavaju rezultate upita. Ako ti je neki mikro projekat, mozes sve da radis pesaka kao sto sam naveo u drugoj recenici. Ako je projekat malko veci, zavisno koliko imas vremena da odvojis za to, mozes sebi olaksati stvari tako sto uradis neke od sledecih stvari:
Napravis pomocnu fukciju za izvrsavanje query-a kojoj prosledjujes samo query i parametre. Tacnije, trebace ti tri takve uz neki zajednicki deo: za Execute (vraca reader), ExecuteScalar i ExecuteNonQuery. Obrati paznju na zatvaranje konekcije kod prve.
Ako imas malo modela, mozes svakom dodati funkciju koja iz reader-a ucitava vrednosti iz kolona u njegove property-e.
Ako imas mnogo modela, mozes napraviti pomocnu klasu/metodu koja refleksijom ucitava iz kolona reader-a u property-e. Ovo ti je lakse ako se imena property-a poklapaju sa imenima kolona. Ako se ne poklapaju, mozes dodavati atribute koji definisu imena kolona sa kojima se property sinhronizuje.
Ako imas gomilu standardnih GetByID, Update, Insert, DeleteByID, opet mozes pomocu refleksije, slicno prethodnom generisati query-e.

I tako, ako imas dovoljno potrebe i vremena, napravis sebi mini EF :) (veci deo navedenog i on radi)
S tim da ti sebi mozes napraviti da radi u heppy flow-u i po potrebi sporedne slucajeve, ne moras pokrivati razne granicne slucajeve i mogucnosti da neko koristi to kako ne treba (pravis za sebe).

P.S. Ako nisi vec radio na ovaj nacin (direktno sa konekcijama i komandama), mozda ce ti neke od stvari koje sam navodio biti nejasne, ali kako se budes udubljivao, mozes se vratiti na ovaj post pa ce biti jasnije :)
 
Odgovor na temu

djordjeno
Srbija

Član broj: 35204
Poruke: 332
*.mobitel.si.

Sajt: www.mobitel.si


+42 Profil

icon Re: MVC App bez EF u modelima04.08.2016. u 10:38 - pre 93 meseci
Citat:
alfa-pro: Drustvo primoren sam da radim app bez koriscenja Entity Frameworka u asp.net mvc-u.
Sto se mene tice ja se nebi odvajao od EF, pokusavao sam da ubedim ali neide.

Na koju foru mogu da zadrzim modele ali bez EF?

Neka moja zamisao je da koristim klasicnu System.Data.SqlClient assembly
Napravim npr u model diru klasu Blog koja bi mi bila model sa aksesorima nrp Title, Text, Created, Modifed da kazemo simple.
Da napravim BlogRepository sto bi bilo kao u EF Context klasa gde bi vracao upite (FintAll, Find, Insert, Update).

Sve u svemu ovaj moj primer koliko sam ja predpostavio ne pije vodu i da je ovo za kantu ako ovako uradim.

Mislim totalno mi sada ovo novo nikada nisam radio bez EF sem u web page projektima tu sam koristion WebMatrix.Data assemply i to sljaka super, ali de WebMatrix.Data da koristim u MVC malo bzv a?

Moze neki primer ili da me neko usmeri kako ovo najbolje uraditi a i da moze da se radi unit testing.

Hvala unapred



Pre bih rekao da ti je neko ucinio uslugu:) EF nije jedini ORM tako da imas druge koji mogu da ga zamene.

Poenta je da model, koji je u kontrolerima/view-ima, nema jaku vezu (tight/strongly coupled) sa bazom koja je pozadi.
Tako da eventualne promene RDBS (baze) ne bi smele da ti sruse logiku u web delu.

Pojednostavljeno arhitektura bi bila nesto u stilu model => koji koristi layer/repository => koji koristi neki ORM.
 
Odgovor na temu

alfa-pro
Pancevo

Član broj: 241818
Poruke: 476
*.dynamic.isp.telekom.rs.



+7 Profil

icon Re: MVC App bez EF u modelima04.08.2016. u 11:13 - pre 93 meseci
Aj probacu nesto od ovoga navedeno pa cu da vidim na sta ce to da ispadne. Pa ovaj sada projekat koji ce se raditi je omanji nista specijalno ali imam prikolicu projekata. Cela prica firme je da batali EF za stalno u svim projektima
Kada vidjamo uvek ista lica, na kraju ona postaju deo našeg života. A kada postanu
deo našeg života,
onda žele i da nam ga izmene. I ako ne bude po njihovom, nije im pravo. Jer, svaki
čovek ima tačnu predstavu kako bi trebalo da živimo svoj život. A nikad nemaju pojma
kako treba da prožive sopstveni život.
 
Odgovor na temu

dejanet
Beograd

Član broj: 19240
Poruke: 1181



+835 Profil

icon Re: MVC App bez EF u modelima04.08.2016. u 11:32 - pre 93 meseci
Pogledaj Dapper:
https://github.com/StackExchange/dapper-dot-net

 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: MVC App bez EF u modelima04.08.2016. u 12:02 - pre 93 meseci
Citat:
alfa-pro: Cela prica firme je da batali EF za stalno u svim projektima

Cisto iz radoznalosti.. Zasto? :)
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: MVC App bez EF u modelima04.08.2016. u 15:14 - pre 93 meseci
Da, i mene to interesuje. Mogu da razumem EF4, to je stvarno bilo umobolno, ali sta fali EF6.1.3? I jos bolje, sta fali EF Core 1.0 (EF7)?


Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

alfa-pro
Pancevo

Član broj: 241818
Poruke: 476
109.122.107.*



+7 Profil

icon Re: MVC App bez EF u modelima05.08.2016. u 11:04 - pre 93 meseci
Pa politika firme, izgleda da se to nesvidja tom senioru koji je nama sef a on je tako kao neki.... Mislim da LINQ upite ne moze vise nista da mi zameni ali ajde ko sam ja tu da se pitam nesto
Kada vidjamo uvek ista lica, na kraju ona postaju deo našeg života. A kada postanu
deo našeg života,
onda žele i da nam ga izmene. I ako ne bude po njihovom, nije im pravo. Jer, svaki
čovek ima tačnu predstavu kako bi trebalo da živimo svoj život. A nikad nemaju pojma
kako treba da prožive sopstveni život.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: MVC App bez EF u modelima05.08.2016. u 22:35 - pre 93 meseci
LINQ kao LINQ nije nikakva misterija, to je samo laksi nacin da se izgradi tzv "expression tree", na provajderu je da implementira IQueryable i pretoci to drvce u konkretan upit. Samim tim, ne postoji ogranicenje na sta se LINQ moze primeniti (npr NHibernate ima odlicnu implementaciju).

Iako je upotreba SqlCommand paterna ogranicavajuca u tom smislu da ne mozes da definises upite, uvek mozes rezultat da pretabas u objektni model i da onda koristis LINQ to objects i da te objekte koristis u MVCu. To mozes da uradis bilo preko recimo Dapper-a ili sam, kroz nad=upit ili kroz konverziju reader-a u iterator metod

query:
Code (csharp):

var list = reader.Cast<IDataRecord>()
                 .Select(dr => new MyType { Ime = dr.GetString(0), ... })
                 .ToList();
 


iterator
Code (csharp):

        private static IEnumerable<CustomerDefinition> ProcessCustomerDataReader(DbDataReader dr, CancellationToken token)
        {
            if (dr.HasRows)
            {
                while (dr.Read() && !token.IsCancellationRequested)
                    yield return new CustomerDefinition()
                    {
                        CustomerNo = (int)dr.GetDecimal(0),
                        Title = dr.IsDBNull(1) ? null : dr.GetString(1),
                        FirstName = dr.IsDBNull(2) ? null : dr.GetString(2)                    };
            }
        }

    from c in ProcessCustomerDataReader(dr, token)
    ....

 

Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

alfa-pro
Pancevo

Član broj: 241818
Poruke: 476
109.122.107.*



+7 Profil

icon Re: MVC App bez EF u modelima06.08.2016. u 10:40 - pre 93 meseci
Ma nemam ja problem sa LINQ upitima kao sto sam gore vec napomenuo. Da se ja pitam nikada ne bi menjao EF a ni koriscenje LINQ upita!
Kada vidjamo uvek ista lica, na kraju ona postaju deo našeg života. A kada postanu
deo našeg života,
onda žele i da nam ga izmene. I ako ne bude po njihovom, nije im pravo. Jer, svaki
čovek ima tačnu predstavu kako bi trebalo da živimo svoj život. A nikad nemaju pojma
kako treba da prožive sopstveni život.
 
Odgovor na temu

ik0
Ivan Cekov
Information System Developer
Planning Authority Malta
Floriana, Malta

Član broj: 222385
Poruke: 158
*.i11-5.onvol.net.



+3 Profil

icon Re: MVC App bez EF u modelima05.12.2016. u 21:24 - pre 88 meseci
Probaj ovo na posao mi je novija verzija, ovo smo na posla sami uradili da bi mogli bolje da radimo sa stored procedure.

evo ti i neki primer, pogledaj fajlove

*ExtensionMethods
*Extensions
i resto :D nismo pisali dokumetaciju tako da trebas sam da razumes kako radi :D a inace pola government institution u Maltu rade sa ovim (posto mi uglavno radimo te vladine zaebacije) i mnogo je dobro :D

Code:

public class User
{
    [ProcedureParameter("@name")] //primer namesto onaj dole linq da se ubijes od pisanja 
    [ResultParameter("Name")]  //ExecuteProcedureWithResult sama upise sve rezultate u odgvarajuca polja
    public string Name { get; set; }
 
    [ProcedureParameter("@surname")]
    [ResultParameter("Surname")]
    public string Surname { get; set; }
 
    [ProcedureParameter("@id", true)]
    [ResultParameter("Id")]
    public int ID { get; set; }
}
 
Executing on the Database
 
User[] users = db.ExecuteProcedureWithResult<User>("[Users].[usp_GetAllUsers]");
 
Sample
 
db.OpenConnection();
User[] users = db.ExecuteProcedureWithResult<User>("[Users].[usp_GetAllUsers]");
db.CloseConnection();
MessageBox.Show(users.Select(x => String.Format("{0} {1}", x.Name, x.Surname)).Aggregate((x, y) => String.Format("{0}\n{1}", x, y)));

        IDataBaseProvider datah =
            SqlAccessLayer.CreateDatabaseProvider(
                ConfigurationManager.ConnectionStrings["ArtemisconnString"].ToString().Trim());

        List<ApplicationList> agendas = new List<ApplicationList>();

        var param = datah.GetParameter("@date", DbType.Date, date);

        datah.OpenConnection();

        agendas =
            datah.ExecuteProcedureWithResult("usp_GetAgendasDetailsByDate", param)
                .Select(
                    x =>
                        new ApplicationList
                            {
                                SystemKey = x.Read<int>("SystemKey"),
                                Architect = x.Read<string>("Architect"),
                                CaseNumber = x.Read<string>("Case Number"),
                                ItemNumber = x.Read<string>("ItemNumber"),
                                Location = x.Read<string>("Location"),
                                Proposal = x.Read<string>("Proposal"),
                                Recommendation = x.Read<string>("Recommendation")
                            })
                .ToList();

        datah.CloseConnection();

Kude tumbe i tri bandere
 
Odgovor na temu

[es] :: .NET :: ASP.NET :: MVC App bez EF u modelima

[ Pregleda: 3537 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

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