Avatar billede pnr Nybegynder
08. oktober 2010 - 13:28 Der er 8 kommentarer og
2 løsninger

Spørgsmål til Entity framework 4

Jeg har "rodet" lidt overordner med Entity framework 4 (EF), og umildbart er der ret let at gå til. Men er der nogle stor ulemper ved EF i forhold til andre mapping tools som jeg skal være opmærksom på?

Kan EF ikke opdatere en database når man laver rettelser i modellen? jeg synes kun at den kan generer en db ikke opdatere den?

På forhånd tak for svar!
Avatar billede Syska Mester
08. oktober 2010 - 14:08 #1
EF4 er mange ting.

Generelt set synes jeg ikke specielt godt om det, der er stadig mange ting der er mærkelige. Jeg har rodet med "Code First"/"Model First" ... som man så mapper mod ens DB, intet automatisk, men synes den gør det godt. Jeg synes ikke specielt godt om det når alt for meget bliver for automatisk.

Det er vist et one-way spm ... enten retter du i DB'en ... og så bliver din model opdateret derefter eller også modsat.
Hvordan skulle man ellers finde ud af om en type skal ud eller ind :-)

En del af klasserne er også partial så du kan udvide dem ...

NHibernate er jeg ret sikker på er bedre og mere moden. Jeg skifter i hvert fald snart, når lige en masse andre ting er kommet på plads.

Hvis du googler vil du også kunne finde en millard posts omkring netop dette emne.

Hvis du afhænger 100% af MS teknoligier, så er EF4 nok den rigtige vej ... da det skulle have et bedre sammenspil med deres services.
Avatar billede pnr Nybegynder
08. oktober 2010 - 14:22 #2
Hej buzzzz

Tak for din kommentar!

Mht. at opdatere databasen på baggrund af en rettelser i modellen, så forstår jeg ikke dit svar. Den burde da kunne f.eks. kunne tilføje et felt i DB hvis jeg tilføjer et på modellen, uden at skulle lave en helt ny DB?
Avatar billede Syska Mester
08. oktober 2010 - 14:28 #3
Ja, men hvad så modsat? Hvis du laver ting i DB'en? f.eks tilføjer et indexes? Det er smart til hurtigt at teste ting, men senere vil jeg til en hver tid altid lave DB'en selv ...
Avatar billede pnr Nybegynder
08. oktober 2010 - 14:33 #4
Det virker fint hvis jeg laver en ændring i DB og opdatere modellen, men ikke omvendt.

Der sql den generere er kun til oprettelse og ikke Updates.
Avatar billede Syska Mester
08. oktober 2010 - 15:25 #5
Nej, men det er jo netop det jeg også siger er problemet. Du kan ikke få 2-way.

Hvordan skal den nogen sinde vide hvem der har ret, hvis du fjerner et fejl enten fra modellen eller DB'en.

Jeg tror ikke der er understøttet 2-way, det ville i hvert fald kræver et form for source control for at vide hvem der har ændre sig (DB eller model)

Jeg ville klart gå efter at lave DB'en selv ... og lade din model opdatere. Du ville få problemer mange steder hvis din model fjerner properties fra din DB hvis den bliver stor.

Indexes ville også give problemer ... suk suk.

mvh
Avatar billede arne_v Ekspert
09. oktober 2010 - 02:00 #6
Fra en praktisk synsvinkel:
- hvis du retter i tabel strukturen er det formentligt fordi du tilføjer et felt
- hvis du tilføjer et felt vil du sandsynligvis have sat nogle andre værdier end NULL

Hvis du alligevel skal sætter værdierne manuelt kan du vel lige så godt også tilføje feltet.

Endvidere kan du godt have situationer hvor klasser og tabeller ikke er 1:1 d.v.s. at en af dem har noget som den anden ikke har.

Så bliver det helt umuligt at finde ud af hvad der skal gøres automatisk.
Avatar billede pnr Nybegynder
09. oktober 2010 - 07:27 #7
Jeg spørg fordi at man løbende på modellen kan vælge, at opdater modellen fra DB, eller opdater DB fra modellen. Men det er kun den ene vej det virkede (hvis ikke man vælger at oprettet sin DB igen). Hvis man opdatere DB på baggrund af modellen tilretter den kun det scipt, den laver til oprettelse af DB. Jeg havde måske forstillet mig at den ville lave et script, som kunne update den eksisterende DB.

Never mind, det var også bare for at finde ud af hvad der var af muligheder :-)

Mange tak for jeres deltagelse!! Smid nogle svar så kommer der point :-)
Avatar billede Syska Mester
09. oktober 2010 - 20:50 #8
svar
Avatar billede arne_v Ekspert
11. oktober 2010 - 03:29 #9
svar
Avatar billede pnr Nybegynder
14. oktober 2010 - 13:37 #10
Jeg har fundet svar på mit spørgsmål i et blog indlæg fra ScottGu. Man kan faktisk sætte det op så den automatisk "opdatere" databasen, dvs. den nedligger den og opretter en ny. Men så kan man opsætte noget standard test data, som bliver "proppet" i DB ved oprettelse.

Læs evt step 5 her: http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx

Step 5.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester