Diskuze: SQL dotaz vs. Linq
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 10 zpráv z 10.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj,
podle mne by mohlo v klauzuli join stačit
join Budovy in db.Budovy on Linky.BudovaId equals Budovy.BudovaId
tedy pokud jsou Id stejného datového typu ...
Vypadá to, že by to tak mohlo fungovat, ale teď mi pro změnu vyskočí hláška
Položka modelu předaná do slovníku je typu System.Collections.Generic.List
1[<>f__AnonymousType58[System.Int32,System.String,System.String,System.Int32,System.String,System.String,System.String,System.Nullable1[System.Int32]]], tento slovník ale požaduje položku modelu typu System.Collections.Generic.IEnumerable1[MVCTelefony.Models.Linky].
V podstatě mám tabulku "Linky", kde je sloupec "BudovaId" a chtěl bych ve View zobrazit místo ID budovy její název (z tabulky Budovy), jenže něco dělám špatně. Do modelu jsem si přidal novou položku
public string BudName { get; set; }
a myslel jsem si, že to takto půjde zobrazit..., ale evidentně nejde
Snazis se to nacpat do dropdownlistu nebo jen tak vypsat?
To je tím, že na konci toho LINQ dotazu vytváříš v části Select
anonymní třídu.
Pokud chceš pouze zobrazit název budovy místo Id a máš tyto tabulky v
relaci (což bys mít měl), pak bys také měl mít u typu Linka virtuální
vlastnost typu Budova a tedy by stačilo vypsat linka.Budova.BudovaNazev.
Tabulky v relaci nemám, protože jsem to nikdy před tím nepotřeboval. To
ale není problém zařídit.
Jen nějak nechápu to
mít u typu Linka virtuální vlastnost typu Budova
jak to mám udělat?
V modelu Budova si udelej navigacni property public virtual Linka Linka {get;set;}, v modelu Linka zase udelej kolekci budov public virtual ICollection<Budova> Budovy {get;set;}. Bud ten FK muzes udelat pres data anotace a nebo pres fluent api.
http://www.entityframeworktutorial.net/code-first/configure-one-to-many-relationship-in-code-first.aspx
Řekl bych, ze by ta relace měla být obráceně. V modelu Budova mít kolekci linek a v modelu Linka jednu budovu...
Až se skoro stydím, jak to bylo jednoduché. Když jsem si v DB udělal
relaci mezi tabulkami Linky a Budovy, vytvořil jsem si znovu model (tam se
automaticky přidala ta virtuální vlastnost) a controller a views si to
všechno vygenerovalo samo... Díky.
P.S. Dříve jsem relace nedělal, protože jsem tvořil v ASP.NET WebForms a
tam jsem používal klasické SQL dotazy a ne EF. Ale řekl jsem si, že se už
konečně musím vnořit do MVC a pochopit to fungování EF. Ještě jednou
díky za tvé rady...
Zobrazeno 10 zpráv z 10.
