Entity Framework - složené klíče či jednoduché rubrika: Programování: .Net

4 pilif
položil/-a 20.5.2017

Zdravím ve spolek,
potřebuji radu či názor na tuto situaci:

Převádíme aplikaci ze staršího systému do c#.NET aplikace s použitím Entity Frameworku.
Převod se týká pouze aplikace, samotná databáze zůstává nezměněna.
Jednou ze základních podmínek je, aby obě aplikace běžely po určitou dobu společně - nejsme schopni celý systém jedním šmahem převézt a dodat zákazníkům.

Problém: podstatná část databázových struktur je řešena pomocí složených klíčů. Jak primární klíče, tak i samozřejmě cizí klíče. Není neobvyklá situace kdy hlavička dokladu má primární klíč ze tří polí, položka dokladu pak cizí klíč z těchto tří polí a svůj vlastní primární klíč tedy ze 4 polí.
Existují tabulky, např. vazební, kde je 12 polí z čehož 10 připadá na dva zicí klíče.

Uvažujeme dva způsoby řešeni.

A:
ponecháme strukturu DB jak je a EF budeme muset prostě používat se složenými klíči. Vyvstávají tam sice jisté komplikace s vazbami či dohledáváním podle ID (které bude v tomto případě spíše virtuální), ale je to myslím řešitelné.
Bude sice větší režie na vytvoření entity modelu, ale na to jsme si vytvořili již vlastní entity generátor.

B:
začneme stávající struktury DB upravovat = přidáme jednoduché primární klíče (long/int) a použijem je samozřejmě také jako cizí klíče.
Z pohledu návrhu v EF to bude jednodušší. Zde ovšem narážíme na nutnost úprav v původním kódu aplikace.
Postupně jak by byly jednotlivé části kompletně převedeny na novou aplikaci, tak by se původní složené klíče odstraňovaly.

C:
Existuje ještě nějaká další varianta?

Jaký máte na toto názor?
Řešili jste již něco podobného?

Upozorňuji, že se jedná o celkem rozsáhlý ERP systém v rozsahu 1000+ tabulek v databázi.

Díky za názory.

odkaz
7 harrison314
odpověděl/-a 20.5.2017

Entity framework, nema ziaden problem so zlozenymi klucmi, dokonca aj dohladanie pomocou primarneho kluca je doriesene (metoda find vie brat viac parametrov).
Proste nechajte EF triedy vagenrovat z DB.

Jedine na co si dat pozor su tabulky bez primarneho kluca, tam EF spravi primarny kluc zo vstekych stlpcov, ale nemsu byt nullable.

Ak ma aplikacia bezat sucastne zo starou, na DB by som nic nemenil a az po tejto dobe by som zacal DB schemu refaktorovat.

Komentáře

  • Kit : Jak se pracuje s primárním klíčem ze všech sloupců? To musí být děsný opruz, neboť takový primární klíč je k ničemu. 20.5.2017
  • harrison314 : To bolo skor upozornenie, ale prepajacie tabulky casto maju primarny kluc cez vsteky stlpce. Tam to nie je k nicomu. 20.5.2017
  • Kit : Spojovací tabulky snad EF vně neprezentuje, měly by být před vnější aplikací skryty. 20.5.2017
  • harrison314 : Defaultne neprezentuje, ale moze, ked je to treba. 20.5.2017

Pro zobrazení všech 4 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.