login  Naam:   Wachtwoord: 
Registreer je!
 Forum

ASP.NET C# MVC - DB via model | Pagina 2

58 antwoorden

Gesponsorde links
Offline Wijnand - 20/01/2009 09:12
Avatar van Wijnand Moderator Ok, gaaf! Hij werkt :-). Ik krijg resultaten terug. Dank jullie wel allebei.

Er zijn natuurlijk nog wel wat vragen, maar die kan ik zelf wel opzoeken. Bedankt tot zover.
Offline Ontani - 20/01/2009 09:19
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Beetje offtopic, ik vraag mij af of er zoiets ook beschikbaar is in vb.net voor winforms...
Offline nemesiskoen - 20/01/2009 09:26
Avatar van nemesiskoen Gouden medaille

PHP expert
Ja, dat is er:-)
LINQ to SQL werkt ook voor VB.NET forms. Het is zo een beetje een vervanging voor de .xsd bestanden. Het genereert dus je sql code en je kan een resultaat van een LINQ to SQL query als datasource gebruiken. Of opslaan in een variabele binnen de form en manipuleren voor de resultaten aan te passen bij bv. zoeken, sorteren, etc...

Gewoon in je solution: add->new file->linq to sql.
Bestaat sinds .NET 3.5 als ik me niet vergis.
In die file sleep je jouw databasestructuur, je legt de relaties, veranderd namen als nodig, en je kan beginnen!
De syntax is een ietsie beetje anders dan voor C# maar ik denk dat de LINQ to SQL queries die hier als voorbeeld zijn gegeven ook werken in VB!

Mocht je nog vragen hebben, laat maar weten.
Offline Ontani - 20/01/2009 09:34
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Dat LINQ bestond wist ik (Al meermaals gebruikt), ik had het over het topic zelf.

Een MVC framework in't algemeen voor het opbouwen van een winforms applicatie.
Offline nemesiskoen - 20/01/2009 09:46
Avatar van nemesiskoen Gouden medaille

PHP expert
Ow, sorry :-)
Ja en nee: view (je form zelf), controller (je .vb file die achter je form hangt) en dan kan je jouw models maken, eventueel met LINQ. Maar dit wist je waarschijnlijk al, dus strict genomen bestaat er geen MVC voor een formapplicatie. Hopelijk komt dit ooit, als het voor asp.NET een succes blijkt.
Offline Wijnand - 20/01/2009 09:51
Avatar van Wijnand Moderator Denk jij dat het komt? Het probleem is toch dan een controller aangeroepen wordt op basis van je url en dat je dit dan om zou moeten bouwen en het dus minder dynamisch wordt? Of zie ik dat nu fout?
Offline nemesiskoen - 20/01/2009 09:59 (laatste wijziging 20/01/2009 10:01)
Avatar van nemesiskoen Gouden medaille

PHP expert
Inderdaad, het zou dan een MVC framework zijn zonder een router, of in ieder geval een router die op basis van buttons en acties werkt. Maargoed, dit is enkel speculatie. Zeker omdat het MVC framework nog niet officieel is uitgebracht voor asp.NET, maar dat duurt niet lang meer :-)
Offline Ontani - 20/01/2009 10:41
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
zelf maken dus, met custom snippets kan je al enorm veel 
Offline Abbas - 20/01/2009 17:31
Avatar van Abbas Gouden medaille

Crew .NET
Zo zou je een Class Library kunnen maken dan om overal in je WindowsForms projecten te kunnen gebruiken.. 
Offline Wijnand - 20/01/2009 18:03
Avatar van Wijnand Moderator Even een vraag he... kun je een class toevoegen aan je models zodat als je doet: models.iets() dat je dan en functie aanroept die je zelf in een class heb gemaakt?
Offline nemesiskoen - 20/01/2009 18:35 (laatste wijziging 20/01/2009 18:38)
Avatar van nemesiskoen Gouden medaille

PHP expert
Doe eens rechtermuisknop en dan "view code" OP je .dbml file. Dan kan je alles toevoegen wat je maar wil.
Offline Abbas - 20/01/2009 18:58
Avatar van Abbas Gouden medaille

Crew .NET
Of, open gewoon je MSSQL.dbml-file en je zal rechts zien staan dat je items kan toevoegen vanuit je Server Explorer. Dit kunnen bijvoorbeeld Stored Procedures zijn. 
Offline Wijnand - 20/01/2009 20:35
Avatar van Wijnand Moderator Ja maar ik bedoel.. ik ga met webservices werken en die wil ik ook als het ware in mijn 'models' hebben. In iedergeval dat ik daar functies kan aanmaken zoals: "getOverzicht" oid, en dat ik daardoor een bepaalde webservice-method aanroep die resultaten terug geeft.

Snap je? 
Offline nemesiskoen - 20/01/2009 20:53
Avatar van nemesiskoen Gouden medaille

PHP expert
Awel: rechtermuisknop op uw dbml file (in uw solution explorer) en dan view code, en dan kunde daar uwen datacontext uitbreiden:

  1. namespace UwenNamespace
  2. {
  3. partial class NaamDataContext
  4. {
  5. public ... Overzicht(...) {
  6. return iets;
  7. }
  8. }
  9. }
  10.  
  11. // ...
  12.  
  13. class BlahController : ... {
  14. NaamDataContext db = new NaamDataContext();
  15. public ActionResult Iets() {
  16. return View(db.Overzicht());
  17. }
  18. }
Offline Wijnand - 21/01/2009 09:37
Avatar van Wijnand Moderator En dat is de enige manier? Want het is natuurlijk handig om een file te hebben met de naam 'webservices.cs' oid met de class webservices.

Maar goed, ik ga dat zometeen proberen!
Offline nemesiskoen - 21/01/2009 09:48
Avatar van nemesiskoen Gouden medaille

PHP expert
Dan kan je natuurlijk ook doen, maar als je hem wil aanspreken via db.Iets moet het op die manier. Buiten dat ben je vrij om eender welke klasse waar dan ook aan te maken en deze gewoon te behandelen als eender welke normale klasse.
Offline Wijnand - 21/01/2009 09:49
Avatar van Wijnand Moderator Hoe moet je een 'buitenstaande' class dan aanroepen met mvc? (beginnersvraagje)
Offline Abbas - 21/01/2009 09:54
Avatar van Abbas Gouden medaille

Crew .NET
Vanuit je Controller roep je een class aan zoals je dat ook gewoon vanuit een codebehind-file doet. 
Offline nemesiskoen - 21/01/2009 10:14
Avatar van nemesiskoen Gouden medaille

PHP expert
Maak bv. een map aan "extra" of een andere (betere naam) en maak hier een nieuw .cs bestand. Zet hier al je code in. Als je niet met namespaces werkt kan je deze klasse direct in je controllers, views en models gebruiken. Als je wel met namespaces werkt moet je deze wel inladen.
Offline Wijnand - 21/01/2009 10:20
Avatar van Wijnand Moderator Ik ga dat zo even proberen. Als het zo werkt, dan is dat wel gaaf.
Offline nemesiskoen - 21/01/2009 10:21 (laatste wijziging 21/01/2009 10:22)
Avatar van nemesiskoen Gouden medaille

PHP expert
ge moet in ieder geval niet overal include liggen gebruiken zoals in php max namespace inladen, en dat kan dan echt ineens over honderden klassen gaan
Offline Wijnand - 21/01/2009 10:23
Avatar van Wijnand Moderator In php heb ik een auto_load functie dus hoef ik ook geen classes in te laden (in mijn eigen light-frameworkje). hihi maar dat wordt een beetje erg offtopic.
Offline nemesiskoen - 21/01/2009 10:35
Avatar van nemesiskoen Gouden medaille

PHP expert
Ja idd, auto_load is wel handig, maar da freet geheugen gelijk geen ander. Swat, laat maar weten of het is gelukt! :-)
Offline Wijnand - 21/01/2009 10:38
Avatar van Wijnand Moderator Ik heb een probleempje 

Ik heb een map "Extra". Daarin zit het bestand WebservicesNavision.cs

deze ziet er zo uit:
  1. public class WebservicesNavision {
  2. public string giveEcho() {
  3. return "hoi";
  4. }
  5. }


Hij ziet WebservicesNavision wel, maar niet de functie erin. Wat moet ik doen zodat hij die functie ook vind in dat bestand en ik dus de functies gewoon kan aanroepen?
Offline nemesiskoen - 21/01/2009 10:51
Avatar van nemesiskoen Gouden medaille

PHP expert
Euhm, je moet een instantie maken van de klasse. Of je moet giveEcho static maken.

  1. public class WebservicesNavision {
  2. public static string giveEcho() {
  3. return "hoi";
  4. }
  5. }


Of:

  1. public class IetsController {
  2. public ActionResult testEcho() {
  3. WebServicesNavision wsn = new WebServicesNavision();
  4. wsn.giveEcho();
  5. }
  6. }
Offline Wijnand - 21/01/2009 11:09
Avatar van Wijnand Moderator Ok hij werkt. Even prutsen en heb nu dit:

  1. namespace TestMVC.Scripts {
  2. public class WebservicesNavision {
  3.  
  4. public string getEcho() {
  5. return "hoi echo";
  6. }
  7.  
  8. }
  9. }


en om aan te roepen:

  1. using TestMVC.Scripts;
  2.  
  3. namespace TestMVC.Controllers {
  4. [HandleError]
  5. public class HomeController : AppController {
  6. Scripts.WebservicesNavision wsn = new WebservicesNavision();
  7.  
  8. public ActionResult Index() {
  9. string tekst = "";
  10. tekst = wsn.getEcho();
  11. ViewData["Message"] = tekst;
  12. return View();
  13. }
  14. }
  15. }


Lijkt mij zo goed he? Of kan het nog beter? 
Offline Ontani - 21/01/2009 11:11
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Als je die Scripts import hoef je die Scripts.WebservicesNavision toch niemeer te doen. Maar kan je toch gewoon WebservicesNavision gebruiken.
Offline Wijnand - 21/01/2009 11:12 (laatste wijziging 21/01/2009 11:18)
Avatar van Wijnand Moderator klopt.. zag ik net ook ja. Dus heb ik aangepast ;) toch bedankt voor je input ontani!

EDIT: Ok nog verder aangepast. Statisch gemaakt. Aanpassingen gedaan en nu kan ik dit doen:

tekst = WebservicesNavision.getEcho();

Dat is een stuk beter :]
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.189s