Am instalat VS SP1 și am jucat în jurul cu Entity Framework.
Am creat o schemă dintr-o bază de date existentă și am încercat câteva operații de bază.
Majoritatea au mers bine, cu excepția actualizării schemelor bazei de date.
Am schimbat baza de date în mod fundamental:
Primele trei au mers bine, dar schimbarea de tip și ștergerea coloanei nu au urmat modificările bazei de date.
Există vreo modalitate de a face este de lucru de la designer? Sau nu este acceptat în acest moment? Nu am gasit nici un material inca, dar inca caut.
Mi-ar ghici ca, eventual, acestea nu se intampla deoarece ar rupe constructia pentru codul existent, dar asta e doar o presupunere din partea mea.
Iată logica mea:
În primul rând, EF ar trebui să fie mai mult de 1: 1 de cartografiere a tablelor, deci este destul de posibil că doar pentru că ștergeți o coloană din tabelul A nu înseamnă că pentru acea entitate nu ar trebui să existe o descriere a proprietății. S-ar putea să ghiciți acea proprietate la alt tabel.
În al doilea rând, schimbarea unui tip ar putea doar să sparge clădirile. este singura rațiune acolo.
Din demonstrațiile designerului pe care l-am văzut, nu este un instrument impecabil. Este un produs de versiunea 1.0, deci este obligat să aibă câteva puncte de durere. Tipul schimbării este unul dintre ele. Din vizionarea designerului și a generării de coduri, mi-am dat seama că s-ar rupe fie la momentul compilării (nu este probabil), fie la timpul de execuție (când modelul este de fapt executat).
Am constatat că, în general, există încă câteva bug-uri cu funcția "Update Model from Database".
Cheile sunt ucigașul pentru mine - nu am încă să fac modificări pe care le fac la o relație străină-cheie sau să adaug o cheie primară la o masă și să am funcția updater să funcționeze corect (prin faptul că va da o eroare de compilare a generat codul) - dar pentru a rezolva problema este o chestiune simplă de a șterge modelul și de a reimporta (durează doar un minut) - aceasta este mai puțin decât evidentă evident, dar nu am avut niciodată un eșec de importul "proaspăt".
Așa cum am menționat mai sus, puteți șterge doar coloana de la designer. În ceea ce privește modificarea tipului de date al coloanei: reîmprospătați modelul din baza de date, apoi mergeți la mapările tabelului și selectați coloana pe care ați schimbat-o în DB. valorile din dreapta reprezintă modelul dvs., destul de ciudat că nu se actualizează automat, ci doar selectați coloana din dreapta și accesați proprietățile și modificați tipul de date acolo. Ar trebui să devină un meniu derulant.
Noroc.
Rumen
Am construit o aplicație similară cu cea solicitată. Dar soluția mea a fost greu. Voi încerca să-i spun;
You have to create your own database management clases and these objects will be responsible for create, update database schema (I created manually that).
I saw good article and source code on ADO.NET Team blog then you can also download EDMTools from this blog, it open source. And you can also implement model generation and update routines from that into your project.
Finally when the your schema changed you should recreate and bind your model and rebuild your data assembly during runtime. But you have to know most important think, you should tie your data model assembly to your project with loosely coupled (check out this post)
Other way, you should wait for EF 4.0 release (it CTP 1 now), they announced that they will provide create,delete,update DatabaseScript functions.
Blocare bună
Modul în care fac acest lucru (și fac toate lucrurile pe care le menționați, plus redenumirea coloanelor) este prin modificarea bazei de date și regenerarea codului EF folosind EF Code First.
Nu fac modificări cu privire la codul EF de primă clasă pentru bine sau pentru rău (inclusiv coloane necunoscute pentru relații) pentru a ușura procesul.
Nici un generator de schemă de designer sau ORM nu va putea modifica baza de date de producție dacă are date constrânse în ea. De aceea ar trebui să începeți întotdeauna să verificați dacă modificările dvs. în DB sunt fezabile, să le încercați pe o bază de date de dezvoltare și apoi să vă adaptați codul pentru a reflecta modificările.