Aktualizace schématu databáze v Entity Framework

hlasů
8

Nainstaloval jsem VS SP1 a hrál si s Entity Framework.

Vytvořil jsem schéma z existující databáze a snažil některé základní operace.

Většina z nich šlo dobře, s výjimkou aktualizace schématu databáze.

Změnil jsem databázi v každém základním způsobem:

  • přidal novou tabulku
  • vypouští tabulku
  • přidán nový sloupec existující tabulky
  • vypouští sloupec z existující tabulce
  • změnil typ existujícího sloupce

První tři šlo dobře, ale změna typu a odstranění sloupec nebyl následoval změny databáze.

Existuje nějaký způsob, jak je práce od designéra? Nebo je to není podporován v současné době? Jsem nenašel žádný související materiál, přesto však stále hledá.

Položena 15/08/2008 v 12:15
zdroj uživatelem
V jiných jazycích...                            


7 odpovědí

hlasů
6

Hádal bych, že možná ty, které se nestávají, protože by narušil sestavení pro stávající kód, ale to je jen odhad z mé strany.

Tady je moje logika:

Za prvé, EF má být větší než 1: 1 mapování tabulky, takže je docela možné, že právě proto, že jste odstranění sloupec z tabulky A neznamená to, že k tomuto subjektu, tam by neměl být vlastnost Popis. Můžete jen mapa, která vlastnost jiné tabulky.

Za druhé, změna typu mohl zlomit staví. to je tam jen zdůvodnění.

Odpovězeno 15/08/2008 v 17:18
zdroj uživatelem

hlasů
5

Zjistil jsem, že v zásadě stále existuje poměrně málo chyb s ‚Aktualizovat model z databáze‘ funkčnost.

Klávesy jsou pro mě vrah - Ještě jsem žádnou změnu udělám do cizí klíč vztah nebo přidat primární klíč do tabulky a mají pro aktualizaci fungovalo správně (v tom, že bude dávat chybu kompilace na generovaný code) - ale k vyřešení problému je to jednoduchá záležitost, zrušením modelu a re-import (trvá jen chvilku) - to je méně než ideální samozřejmě, ale nikdy jsem neměl chybu z ‚čerstvých‘ dovoz.

Odpovězeno 24/09/2008 v 19:34
zdroj uživatelem

hlasů
1

Z ukázky projektanta jsem viděl, že to není bezchybný nástroj. Jedná se o produkt verze 1.0, takže je to vázáno na nějaké body bolesti. Typ změna je jedním z nich, jak se zdá. Ze sledování projektanta a generování kódu, zjistil jsem, že by se dalo rozdělit buď při kompilaci (není pravděpodobné), nebo při spuštění (když je model skutečně popraven).

Odpovězeno 19/08/2008 v 04:55
zdroj uživatelem

hlasů
0

Způsob, jakým to dělám (a dělám všechny věci, které zmiňujete, a přejmenování sloupce), je tím, že změny v databázi a regenerační EF kód pomocí EF kód nejprve.

Nejsem manipulaci s EF kód nejprve třídách pro dobrý nebo špatný (včetně nesmyslně pojmenovaných sloupcích pro vztahy) k usnadnění tohoto procesu.

No designér nebo ORM generátor schéma bude moci provádět změny do svého výrobního databáze, pokud to omezeny data. To je důvod, proč byste měli vždy začínat se podívejte, zda změny v DB jsou proveditelné, vyzkoušet je na databázi vývoje a pak přizpůsobit svůj kód tak, aby odrážely změny.

Odpovězeno 13/02/2013 v 15:03
zdroj uživatelem

hlasů
0

vystavěl jsem podobnou žádost jako váš požadováno. Ale moje řešení bylo těžké. Pokusím se zjistit;

  1. Budete muset vytvořit svůj vlastní databázový třídách a tyto objekty bude zodpovědný za vytváření, aktualizace databáze schématu (I vytvořit ručně, že).

  2. Viděl jsem dobrý článek a zdrojový kód na ADO.NET blogu týmu pak si můžete také stáhnout EDMTools z tohoto blogu, je open source. A také můžete implementovat generování modelu a aktualizovat rutin, které do projektu.

  3. A konečně, pokud změní váš schématu, měli byste znovu a vázat svůj model a znovu vytvořit sestavy dat během běhu. Ale musíte vědět, nejdůležitější myslet, měli byste svázat si montáže datový model pro svůj projekt s volně vázané (podívejte se na tento příspěvek )

    Jiný způsob, jak byste měli počkat na EF 4,0 uvolnění (to CTP 1 nyní), které oznámily, že budou poskytovat vytvářet, mazat, aktualizujte DatabaseScript funkce.

Good lock

Odpovězeno 09/10/2009 v 22:00
zdroj uživatelem

hlasů
0

Jak již bylo zmíněno dříve, stačí odstranit sloupce z projektanta. Pokud jde o změně typu dat sloupce: stačí aktualizovat model z databáze a pak přejděte na mapování tabulky a vyberte sloupec, který jste změnili v DB. hodnoty na pravé straně představuje model, kupodivu to nedostane automaticky aktualizován, ale jen vyberte sloupec vpravo a přejděte na vlastnosti a změnit typ dat tam. Měl by se stát rozbalovací menu.

Na zdraví.

zrudlý

Odpovězeno 04/08/2009 v 00:41
zdroj uživatelem

hlasů
0

Je třeba odstranit sloupec sami od návrháře nebo XML souboru.

Odpovězeno 17/09/2008 v 08:40
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more