IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Petr Kasnal
Člen
Avatar
Petr Kasnal:16.10.2018 21:02

Zdravím používam entity framework. Programuji v .Net MVC a udělal jsem si proceduru. Vše funguje jak má, mám to napojené na entity, ale z této entity nechci používat všechny proměnné a to je problém. Aplikace spadne na chybě

The data reader is incompatible with the specified 'Models.Sport'. A member of the type, 'Description, does not have a corresponding column in the data reader with the same name.

Chybě rozumím, ale mám dotaz zda to nejde nějak obejít zkrátka aby mi to vrátilo jenom co chci a za zbytek dosadilo null. Samozřejmě vím, že můžu použít úplně nový objekt, ale to se mi moc nechce. Předem díky za rady. :)

Zkusil jsem: Zkoušel jsem hledat na netu, ale nic moc jsem nenašel....

Chci docílit: Správné funkčnosti

 
Odpovědět
16.10.2018 21:02
Avatar
Odpovídá na Petr Kasnal
Michal Štěpánek:16.10.2018 21:39

Možná kdybys sem dal konkrétní příklad (kus kódu), při jakém dotazu to spadne, na co se v něm ptáš, co z něj vytahuješ atd., dalo by se lépe poradit...

Nahoru Odpovědět
16.10.2018 21:39
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Petr Kasnal
don.jarducius:16.10.2018 21:44

Ahoj, co LINQ to SQL? (na data se optat přímo, ne pomocí procedury)

Nahoru Odpovědět
16.10.2018 21:44
Ten kdo nechce hledá důvod, ten kdo chce hledá způsob
Avatar
Petr Kasnal
Člen
Avatar
Odpovídá na Michal Štěpánek
Petr Kasnal:17.10.2018 17:33

Dobře mám následující kód v proceduře.

SELECT SU_Sport.Name
SU_Sport.ID
from SU_Sport

Nekoukejte prosím na to, že je to jedoduché o to tu nejde. A následně bych tento výstup chtěl zkopírovat do Entity Sport kde je ID,Name,DateCreate atd. a nejde to hodí to tu chybu jak jsem psal víš. A můj jediný dotaz je zda to vůbec nějak de nacpat do tý entity nebo si pro výstup z této procedury musím udělat model.
Předem děkuji za odpověď.

A druhá odpověď ano přes linq by to šlo ale dělám to přes EF kde to taky de ale zrovna tady bych prostě potřeboval proceduru.

 
Nahoru Odpovědět
17.10.2018 17:33
Avatar
don.jarducius:17.10.2018 19:26

Ok,
a co EF, LINQ a anonymní třídy? V DbContextu máš nejspíš DbSet s názvem SU_Sport. Můžeš se přeci přímo optat takto:

var dbc = new TvujDbContext();
var pouzeIDaNAME = dbc.SU_Sport.Select(x=>new { x.ID, X.Name}).ToList();

případně přidat nějakou omezující podmínku. Není přeci důvod používat procedury při čtení.

Nahoru Odpovědět
17.10.2018 19:26
Ten kdo nechce hledá důvod, ten kdo chce hledá způsob
Avatar
Petr Kasnal
Člen
Avatar
Odpovídá na don.jarducius
Petr Kasnal:17.10.2018 20:31

V této proceduře mám rekurzi. Chci to mít v proceduře, protože je to rychlejší.

 
Nahoru Odpovědět
17.10.2018 20:31
Avatar
Odpovídá na Petr Kasnal
don.jarducius:17.10.2018 22:24

No, to jsi ale vůbec nenapsal... leze to z tebe jak z chlupatý deky. A co zkusit View? Do definice view hodit tu tvoji rekurzi a namapovat v EF, případně si vygenerovat třídu podle View. ...nevím jestli teda používáš Code First nebo DB First.

Nahoru Odpovědět
17.10.2018 22:24
Ten kdo nechce hledá důvod, ten kdo chce hledá způsob
Avatar
Petr Kasnal
Člen
Avatar
Petr Kasnal:17.10.2018 23:02

Nevim co ze mě leze jak z chlupatý deky ale ok... Dal jsem jen jednoduchou otazku a ty si mi na ni nepdpovedel jenom mi furt davas alternativy. Moje otazka zni: kdyz mam proceduru muzu jeji vystup nejak napojit na entity model? Nebo pro to musí vytvořit zvlášť output model? (Vygenerovat) To je moje jedina otazka kterou uz jsem napsal dvakrat a ty si mi nejdriv napsal linq a pak view nevim co je na tom nesrozumitelnyho nic mene jsem pochopil ze je spise lepsi pouzit vlastni model - moznost pridat promenny co entity nema atd. Takze diky za odpovědi.

 
Nahoru Odpovědět
17.10.2018 23:02
Avatar
Odpovídá na Petr Kasnal
don.jarducius:18.10.2018 19:30

Promiň, já myslel že ti to došlo z chybové hlášky, class v C# musí odpovídat výstupní "tabulce". Pokud používáš DB First, pak ti EF (pokud si to samozřejmě zvolíš) vygeneruje do DbContextu i příslušné funkce pro procedury a pokusí se odvodit "model". Pokud nepoužíváš DB First, pak si musíš model udělat ručně.

Nahoru Odpovědět
18.10.2018 19:30
Ten kdo nechce hledá důvod, ten kdo chce hledá způsob
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.

Zobrazeno 9 zpráv z 9.