Zdravím místní programátory, v pravidelné minisoutěži budeme hrát o
placku Machr na C# .NET, případně Machr na OOP a samolepky. Snažil jsem se
opět vymyslet praktické zadání, které je jednoduché a připraví vás na
zaměstnání. Řešení dnešního zadání by se po rozšíření dalo
určitě i prodat, třeba si na tom někdo uděláte business
Naprogramujte fakturační systém v C# .NET s použitím technologií WPF a
Entity Framework (to je knihovna pro objektový přístup k DB). Jako databázi
použijte SQL Server. Ačkoli to zní asi složitě, budete překvapeni, jak
rychle to s Entity napíšete a pokud ho neznáte, máte nejvyšší čas se ho
naučit.
Systém bude značně zjednodušený a bude obsahovat 2 entity: Osoba a
Faktura. Osoba má nějaké jméno a adresu. U faktury lze následně zvolit
dodavatel a odběratel (z uložených osob), její cena a název služby, na
kterou je vystavená.
Pokud chcete být důkladní, vygooglujte si jak vypadá faktura a přidejte
osobě i věci jako IČ, DIČ a podobně. U faktury je pak ještě nějaké
datum, číslo (to se většinou generuje samo jako 2014020101 - první faktura
prvního února 2014). K soutěži to potřeba není, samozřejmě když si s
tím někdo vyhraje, bude zvýhodněn.
Část pro pokročilé
Pokud umíte pracovat s Entity, budete se asi dost nudit, že? Nejsložitější
je vlastně naklikání GUI. Můžete naprogramovat uložení faktury do PDF. K
tomu jsou minimálně 2 extrémně jednoduché a free knihovny, zjistěte si jak
se používají, hodí se vám to. Aplikace s exportem do PDF budu hodnotit
zvlášť.
Právě, kdo někdy použil kvalitní ORM, tak už nebude chtít nic jiného.
To jsou prostě ty technologie, kdy člověk nakliká aplikaci kterou by jinak
dělal hodiny za minuty
CE už máš nainstalovaný, je součástí VS nebo dost možná i
součástí Windows. CE značí CompactEdition. Používá se stejně, ale DB
pak funguje všude, ne jen tam, kde je nainstalovaný MS SQL Server. Jsou tam
nějaká malá omezení.
Je možné, že při vytváření nového Data Connection nemám v nabídce
SQL server CE? Já mám na výběr jen toto: Microsoft Access Database File,
Microsoft SQL Server a Microsoft SQL Server Database File (Používám VS2013
Express for desktop)
Server explorer jsem nikde nenašel, mám tam jen Database Explorer a tam
když dám Add connection, tak mám jen tyto volby: https://www.dropbox.com/…0%282%29.png
Tak jsem si to stáhl a při instalaci mi to říkalo, že už ho mám
nainstalovaný, a nabídlo mi to akorát odstranit nebo opravit, zkusil jsem
opravit ale ničemu to nepomohlo, ve VS ho pořád nevidím.
CE lze ve VS 2013 použít, ale nedá se k němu připojit skrze server
explorer. Jinak programovat nad ním můžete a není to problém co se týče
code first přístupu.
Pokud však toužíte nakukovat do databáze poslouží perfektně tento
doplněk: http://visualstudiogallery.msdn.microsoft.com/…6e74d369f7a1
Jo, ano.. Ale tady to není zas takový problém
Moc to nechápu proč to MS zaříznul.
Alternativa je LocalDB, která však má víc než 160 MB a to se už opravdu
nehodí k nějaké appce jen tak..
MS má spoustu technologií a ty, které používá málo lidí nebo
generují malý zisk, prostě zařízne, aby mohl vyvíjet jiné. To je běžné
chování zdravé firmy. Podobně skončilo i XNA. O LocalDB jsem ještě
neslyšel, máš s tím nějaké zkušenosti?
Ten Entity Framework mi přijde lehce jednodušší než LINQ to SQL. EF má
třeba luxusní funkci "Update Model from database..." čili když změním
něco v DB, tak jedním klikem se mi aktualizuje i ORM.
Možná to bude také tím, že se s CE ztrácela nutnost pronájmu SQL
serveru a z toho plynoucí malé zisky...
S localDB zkušenost nemám. Na nepodporu CE ve vs13 jsem přišel ve stejnou
chvíli...
Asi takhle - MS SQL Server je robustní databázovej server pro přístupy
tísíců a desítek tisíc klientů. Ale pro malý subjekty typu SOHO (tj.
desktopové aplikace,či malé podnikové sítě, intranety pro desítky
klientů) je zbytečně drahej a taky HW náročnej,čili v týhle skupině by
si ho málokdo kupoval. . Čili-pro tuhle skupinu dodává Microsfot dál MS SQL
Server CE (a lze si ho stáhnout) - akurát jsou v něm skutečně některé
rozšířené funkce oproti čistému SQL serveru zablokovaný...Čili i v ve
Visual Studiu 2013 lze naprogramovat přístup k CE, ale přes Entity Framework
ne...
Takovej důvod proč Microsoft možná pomalu odpískává CE je asi ten že
už současně nabízí podobnej produkt SQL Server 2014 Express - a taky
zdarma.a ten asi bude dělat skoro to samotný...Čili jenom že neplatí to že
by Microsoft někoho tlačil do drahýho plnýho MS SQL Serveru, ty bezplatný
varianty budou dál.
Vytvoření funkčního GUI trvalo nejdéle. Nefunguje mi žádná validace
(PSC,ICO a Cena se musí zadat jako číslo). Zkoušel přímo v XAMLu použít
nějaký vlastní validátor (ValidationRule) , ale neúspěšně. Do pondělí
to snad dořeším. Dále mám v datagridech a comboboxech jeden řádek navíc,
který je prázdný, což vůbec nechápu co tam dělá, ale jinak to funguje
celkem použitelně
p4koo - Mocky máš skvěle udělané, pokud jsem to
správně pochopil, generují se náhodně pomocí dll knihovny. Zbytek aplikace
je bohužel dost odbytý a není to WPFko. Snad tě soutěž tedy alespoň
namotivovala k těm mockům.
MartinSakra - U osoby bych měl vybírat asi celou adresu,
ne zvlášť Město, Jméno a ČP. Chválím validace, i když by měly být v
modelech, ne v CodeBehind. Co se týče WPF formuláře, tak je jen naklikaný
myší, chtělo by to používat kontejnery a relativní pozice, potom bude
aplikace responzivní. Nenašel jsem procházení faktur.
Petr Domes (petrds) - Tohle řešení je pecka! Nějak podobně jsem si to
představoval ve svých naivních představách. Umí to kompletně
administraci, výpis, generování do PDF a aplikace obsahuje validace. WPF je
dost pěkné, bindingy, gridy, usercontroly.
PDFko neumí česky, dá se to spravit dodáním řádku:
XPdfFontOptions options = new XPdfFontOptions(PdfFontEncoding.Unicode, PdfFontEmbedding.Always);
a tohoto parametru následně k fontům. Máš to trochu Czechglish
(identifikátory jako selectedFaktura), chtělo by to psát buď česky nebo
anglicky.
Placka je tvoje! S EF nemám takové zkušenosti, docela by mě zajímalo za
jak dlouho se dá tohle udělat? Napiš si x o placku
Všem díky za váš čas a účast, vážím si toho a budu se těšit u
příští soutěže.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.