Dataset alebo iba sqlclient?   zodpovězená otázka

ADO.NET

Zdravim.

Prechadzam z MS Access databazy, kde rokmi vznikla pomerne rozsiahla databaza z cca 100 tabulkami, s radovo niekolko 100 tis. zaznamov. Jasne pomale, padave ...

Zacal som to prepisovat do vb.net + MS SQL a potrebujem pomoct s rozhodnutim:

Aky sposob plnenia dat do formularov zvolit?

Moznosti:

1. typovany dataset, kt. vytvorim pomocou wizardu

2. dataset, kt. vytvorim pre kazdy formular v programovom kode cez dataapapter, vytvorim bindigsouce a k nemu nabindujem jednotlive polia, toto vsetko v programovom kode

3. iba cez sqlclient, plnenie a ukladanie dat iba cez sqlreader....

Skusal som kazdy sposob a kazdy ma nejake problemy, kt. som zatial nevyriesil.

Najviac sa mi paci posledny sposob - sqlclient, myslim ze je to najrychlesi a mam nad datami plnu kontrolu ale pracne.

Odporucania?

Dakujem.

Karol

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Databázi vůbec není nutné konvertovat, ADO.NET si hravě poradí i s Accessem. Kromě výše uvedených způsobů lze použít ještě Entity Framework, což je kvalitní ORM, kde se to víceméně všechno taky vizuálně nakliká, ale je potřeba mít s tím alespoň minimální zkušenosti. Pokud je možné použít jen uvedené způsoby, potom rozhodně 1.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Naopak, 100 tabulek v Accessu, to je potřeba nutně převést na SQL Server i kdyby formuláře a aplikační logika zůstala zatím naprosto nezměněná v Accessu. Access nemá žádný problém připojit tabulky z MS SQL Server databáze (linked tables) a pracovat s nimi úplně transparentně (téměř) bez změny té aplikace (pokud se nejedná o replikace). Co je ale problém je udržení konzistence dat v případě velké nativní Access databáze.

Co se týče toho vytvoření nové aplikace. Protože se nejedná o úplně malý projekt zvažte zda použít čistý EF (v takovém případě bych rozhodně doporučovat "code only" variantu) nebo si raději napsat nějakou vlastní datovou vrstvu (např. pro volání uložených procedur).

Datasety, table adaptery apod. bych u nové aplikace rozhodně nedoporučoval, to je dnes již překonané. Pokud si matně vzpomínám na dobu, kdy jsem to používal, tak to mělo strašně obtížnou udržovatelnost.

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Previest tabulky do ms sql a nasledne ich nalinkovat do accesu som zavrhol.

Problemom nie je iba nespolahlivost access databazy a jej pomalost ale aj samotne programovanie rozhrania v accesse. Bol by to sice lepsie ale ked uz urobit zmenu tak nech to stoji za to.

Program sluzi pre cca 20 ludi, pracujucich sucasne a momentalne je databaza velka cca 1 GB (viem strasne).

Takze datasety nie.

Momentalne som nakloneny k tomu, vytvorit formular, v nom jednotlive textboxy ... a tie plnit cez sqlclient.

Napr. cez sqldatareader.

Aktualizaciu vykonavat cez sqlcommand, pripadne volat ulozenu proceduru na sql serveri. Cize moju moznost 3.

Takto ste to mysleli?

Karol

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Obecně u větších projektů by měla být architektura taková, že je nějaká datová vrstva (1), která se stará o přístup do databáze, a nad ní je nějaká vrstva business logiky (2). A nad tou teprve prezensační vrstva tj. formuláře.

(1) Lze realizovat přes EF, za předpokladu, že řešení veškeré logiky pak budete dělat v C# ve vrstvě business logiky nebo nějakou vlastní knihovnou, kdy lze nějakou logiku, která bude zabalovat použítí ADO.NET. V případě vlastní datové vrstvy lze nějakou základní logiku přesunout do uložených procedur.

(2) Business vrstva by měla být tvořena business objekty obsahující veškerou další logiku.

U větších projektů to přirozeně vede na relativně hodně kódu, proto se většinou některé časti (částečně) generují vlastními generátory nebo nástroji.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Naopak, 100 tabulek v Accessu, to je potřeba nutně převést na SQL Server

Čím více zbytečné práce navíc, tím lépe, nebo jak to bylo myšleno?

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Ne, to bylo myšleno tak, že je to velmi na hraně nebo za hranou toho co Access v praxi technicky zvládne.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Preco by ste volili prvu moznost? Pri typovanom datasete sa bojim o rychlost, ak pridam dataset do formulara, a ten dataset je komplet na celu databazu s tymi cca 100 tabulkami nebude to pomale?

A ako sa to udrzuje vpripade zmeny struktury databazi?

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Volil bych to jen v případě, že není možné použít něco jiného (Entity Framework). Typové datasety nejsou o nic pomalejší než klasický "ruční" přístup do databáze a použití klasického SQL. Všechno se dá jednoduše naklikat a je s tím minimum kodování. Malé změny v databázi nejsou problém. Není nutné pracovat se vším najednou ale pouze s TableAdaptérem pro určitou tabulku.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Pozeral som chvilu na ten EF.

Mam tomu rozumiet tak, ze si najprv vytvorim databazu v SQL a vytvorim entity model, kt. mi bude zabezpecovat vsetku komunikaciu s sql? Nasledne formulare komunikuju iba z modelom a nestaraju sa o sql zapisy, kt. idu do SQl servera?

Neviete odporucit nejaku litaraturu, clanky atd. nieco som nasiel ale nic ucelene.

Karol

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Ano, stejně jako typové datasety se to nakliká a potom se s tím pracuje bez nutnosti psaní databázového kódu. Tutoriál zde:

www.entityframeworktutorial.net/EntityFr...

To co je standardně ve VS2010 je myslím 4.1.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Na "EF pro začátečníky" měl nedávno Altair přednášku, záznam je zde:

https://www.youtube.com/watch?v=0nM38vBk...

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback