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.
Člen
Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
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__AnonymousType5
8[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.IEnumerable
1[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.