[c# asp.net] Entity framework 5

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • kevinkrs
  • Registratie: Juni 2010
  • Laatst online: 18:24
Beste,
Ik ben nog bezig met mijn opleiding, en ik heb een opdracht gekregen. Echter is deze geschikt voor entity framework 4.

Nu ben ik overgestapt naar Windows 8, met visual studio 2012, echter dacht dat versie 5 per definitie niet veel anders was.

Nu is mijn probleem als volgt.

Ik wil een database verbinding maken, dit doen wij op de manier: "EendatabaseContainer db = new EendatabaseContainer()" in de controller.

maar nu blijkt dit niet te werken in Entity framework 5. Ik heb gezocht, maar ik kan niet echt een verschil vinden waar dit aan kan liggen. Heeft iemand een idee hoe ik dus nu in versie 5 een database connectie kan aanroepen?

Alvast heel erg bedankt voor jullie tijd,

Met vriendelijke groet, Kevin.

[ Voor 5% gewijzigd door kevinkrs op 26-11-2012 18:34 ]


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Ik heb heel toevallig gisteravond voor het eerst in mijn leven iets met EF5 gedaan dus ik kan je er alles over vertellen :7 Waar kwam je niet uit toen je de Get Started las?

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Acties:
  • 0 Henk 'm!

  • kevinkrs
  • Registratie: Juni 2010
  • Laatst online: 18:24
Het aanmaken van de database lukt allemaal, hoewel ik zelf sqlexpress gebruikt. Maar dit zal denk ik niet zo'n groot probleem worden.

Maar de connectie leggen naar de database lukt niet helemaal. Hij heet bijvoorbeeld een bloggingcontext iets in die zin. Maar ik heb altijd rechtstreeks verbinding met de database. Dus met EendatabaseContainer db = new EendatabaseContainer() verhaal.

Acties:
  • 0 Henk 'm!

  • markvt
  • Registratie: Maart 2001
  • Laatst online: 16:29

markvt

Peppi Cola

Hoe bedoel je rechtstreeks verbinding met de database?
Post anders eens wat code..

code:
1
2
Entities entities = new Entities();
ddl.DataSource = entities.TABEL.Select(c => new { c.VELD, c.VELD});

van-tilburg.info -=- meka (sega emulator) - Proud MEDION fanclub member - KOPPIG VOLHOUDEN !


Acties:
  • 0 Henk 'm!

  • kevinkrs
  • Registratie: Juni 2010
  • Laatst online: 18:24
code:
1
2
3
4
5
6
        public ActionResult Index()
        {
            var db = new PortfolioDBContainer();
            db. // KRIJG HIER MIJN ENTITY LIJST NIET MEER!!!!!!!
            return View();
        }

Acties:
  • 0 Henk 'm!

  • edeboeck
  • Registratie: Maart 2005
  • Laatst online: 02-06 18:46

edeboeck

mie noow noooothing ...

kevinkrs schreef op maandag 26 november 2012 @ 21:02:
code:
1
2
3
4
5
6
        public ActionResult Index()
        {
            var db = new PortfolioDBContainer();
            db. // KRIJG HIER MIJN ENTITY LIJST NIET MEER!!!!!!!
            return View();
        }
Je maakt db aan van het type var... dan lijkt het me niet onlogisch dat de IntelliSense je niet verder helpt.
Je lijkt me wat verder te komen met:
code:
1
2
3
4
5
6
        public ActionResult Index()
        {
            PortfolioDBContainer db = new PortfolioDBContainer();
            db. // KRIJG JE HIER JE ENTITY LIJST NU WEL ???
            return View();
        }

[ Voor 23% gewijzigd door edeboeck op 26-11-2012 21:08 . Reden: voorbeeldcode van oplossing (?) toegevoegd ]


Acties:
  • 0 Henk 'm!

  • kevinkrs
  • Registratie: Juni 2010
  • Laatst online: 18:24
In versie 4 werkte dit anders prima....
PortfolioDBContainer db = new PortfolioDBContainer();

vult hem ook niet aan met mijn entity. Ik snap niet precies wat er veranderd is tussen deze twee versies?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
edeboeck schreef op maandag 26 november 2012 @ 21:06:
[...]
Je maakt db aan van het type var... dan lijkt het me niet onlogisch dat de IntelliSense je niet verder helpt.
Want :? var is gewoon syntactic sugar; VS (eigenlijk de onderliggende compiler) kan prima 't type afleiden van de rest van 't statement (type inference, kwam even niet op de term :P ).

[ Voor 17% gewijzigd door RobIII op 26-11-2012 21:12 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
edeboeck schreef op maandag 26 november 2012 @ 21:06:
[...]
Je maakt db aan van het type var... dan lijkt het me niet onlogisch dat de IntelliSense je niet verder helpt.
Je lijkt me wat verder te komen met:
code:
1
2
3
4
5
6
        public ActionResult Index()
        {
            PortfolioDBContainer db = new PortfolioDBContainer();
            db. // KRIJG JE HIER JE ENTITY LIJST NU WEL ???
            return View();
        }
Dat is natuurlijk onzin, var is alleen een kortere notatie, maar de compiler en intellisense weten nog perfect welk type het is natuurlijk. Het is niet alsof het een dynamic typed variabele is.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

edeboeck schreef op maandag 26 november 2012 @ 21:06:
[...]
Je maakt db aan van het type var... dan lijkt het me niet onlogisch dat de IntelliSense je niet verder helpt.
Dat heeft er niets mee te maken.
Afbeeldingslocatie: http://i.imgur.com/MKdHw.png

kevinkrs: waarom gebruik je de DbContext niet?

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Acties:
  • 0 Henk 'm!

  • edeboeck
  • Registratie: Maart 2005
  • Laatst online: 02-06 18:46

edeboeck

mie noow noooothing ...

kevinkrs schreef op maandag 26 november 2012 @ 21:08:
In versie 5 werkte dit anders prima....
PortfolioDBContainer db = new PortfolioDBContainer();

vult hem ook niet aan met mijn entity. Ik snap niet precies wat er veranderd is tussen deze twee versies?
Ok, blijkbaar hebben jouw post en mijn edit elkaar net gekruist...
Ben je heel zeker dat het niet gewoon een IntelliSense-probleem is of dat er ergens een reference ontbreekt? Probeer eens zelf je code te kloppen en zie of dat werkt...
Misschien moet ik toch maar zelf eens iets met EF proberen, want nu zit ik maar wat te redeneren...

Acties:
  • 0 Henk 'm!

  • edeboeck
  • Registratie: Maart 2005
  • Laatst online: 02-06 18:46

edeboeck

mie noow noooothing ...

Woy schreef op maandag 26 november 2012 @ 21:10:
[...]

Dat is natuurlijk onzin, var is alleen een kortere notatie, maar de compiler en intellisense weten nog perfect welk type het is natuurlijk. Het is niet alsof het een dynamic typed variabele is.
ok, i stand corrected...

Acties:
  • 0 Henk 'm!

  • kevinkrs
  • Registratie: Juni 2010
  • Laatst online: 18:24
kenneth schreef op maandag 26 november 2012 @ 21:10:
[...]

Dat heeft er niets mee te maken.
[afbeelding]

kevinkrs: waarom gebruik je de DbContext niet?
Ik ben heel eerlijk, ik weet niet precies wat het inhoud. Ik zag in de video wel een mega classe. Maar dit gaat eerlijk gezegd nog een beetje boven mijn pet. Zou je dit misschien een beetje kunnen uitleggen om mij de goede kant op te sturen?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
kevinkrs schreef op maandag 26 november 2012 @ 21:22:
[...]

Ik ben heel eerlijk, ik weet niet precies wat het inhoud. Ik zag in de video wel een mega classe. Maar dit gaat eerlijk gezegd nog een beetje boven mijn pet. Zou je dit misschien een beetje kunnen uitleggen om mij de goede kant op te sturen?
Niet om héél lullig te zijn, maar om uitleg vragen terwijl er verdomd veel (en goede!) documentatie beschikbaar is en dan roepen dat 't je "boven de pet" gaat vind ik not-done. Geef dan op z'n minst aan wat je niet begrijpt en waarom. Zeker als je nog "je eerste stapjes" aan 't maken bent in iets dergelijks is 't wel handig als je even de moeite neemt een (basis)tutorial of 2 door te nemen zodat je bekend bent met terminologie en niet aan 't handje hoeft te worden gehouden "every step of the way".

[ Voor 16% gewijzigd door RobIII op 26-11-2012 21:30 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • kevinkrs
  • Registratie: Juni 2010
  • Laatst online: 18:24
Ik bedoel, in php is het 1 regel code...

$select_iets = mysql_query("SELECT `id`, `naam` FROM `iets` LIMIT 10");

De documentatie is zekers goed, alleen hoe ik het begrijp heb je voor 1 select query in c# 100 regels nodig in een classe?

Enigste wat ik wil is gewoon mijn entity gebruiken. Dus mijn tabel projects ophalen o.i.d

In entity framework 4 werkte mijn methode nog wel, maar in 5 niet. Daarom ben ik nu erg verward van wat doe ik nu dan fout.

Aan de andere kant snap ik je probleem ook uiteraard, dat als ik zeg het gaat boven mijn pet om een classe van 200 regels te schrijven voor een select query. Dat het een beetje kort door de bocht is...

Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Zoals ik al zei: ik heb gister voor het eerst iets met EF gedaan. Ik heb (na het model geimporteerd te hebben uit de database) met 10 regels code een tabel ingelezen en de inhoud daarvan op het scherm gezet. Zo moeilijk is het niet. Dus nogmaals:

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
kevinkrs schreef op maandag 26 november 2012 @ 21:33:
Ik bedoel, in php is het 1 regel code...

$select_iets = mysql_query("SELECT `id`, `naam` FROM `iets` LIMIT 10");
Euh; nee. In PHP heb je dan een resultset (actually, een resource) die je kunt benaderen. Je hebt dan (nog) geen entity/entities. En als je 't verschil tussen een mysql_query en een ORM (framework) niet begrijpt moet je eerst eens even gaan bekijken waarom je überhaupt een ORM aan 't gebruiken bent (en of je dat wel wil).

(En ik ben wel eens nieuwsgierig naar die 200 regels tellende class die volgens jou dan demonstreert hoe 't wel zou moeten)

[ Voor 9% gewijzigd door RobIII op 26-11-2012 21:46 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • markvt
  • Registratie: Maart 2001
  • Laatst online: 16:29

markvt

Peppi Cola

Hoe ziet de uitleg van je school eruit, wellicht zit het daar ook niet helemaal lekker :)

van-tilburg.info -=- meka (sega emulator) - Proud MEDION fanclub member - KOPPIG VOLHOUDEN !


Acties:
  • 0 Henk 'm!

  • kevinkrs
  • Registratie: Juni 2010
  • Laatst online: 18:24
Oke, ik ben de afgelopen uren verder gaan spelen. En heb de tutorial nog eens zorgvuldig beluistert.
Ik begin hem nu een beetje te snappen met verbanden etc. Maar ik heb nu het volgende probleem:

"Multiple object sets per type are not supported. The object sets 'Id' and 'Projects' can both contain instances of type 'ExampleDatabaseProject.Controllers.Project'."

Wat ik zeg maar wil, is mijn entity projects ophalen. Weet iemand misschien wat ik fout doe?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
      public class ProjectController : Controller
    {
        //
        // GET: /Projects/

        public ActionResult Index()
        {

            var db = new PortfolioDB();


            ViewBag.Projects = db.Projects;
            return View();
        }
    }

    public class Project
    {

    }

    public class PortfolioDB : DbContext
    {
        public DbSet<Project> Projects { get; set; }
    }


Alvast heel erg bedankt :)

[ Voor 9% gewijzigd door kevinkrs op 26-11-2012 23:37 ]


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Hoe ziet je database eruit? Wat voor EF model heb je gemaakt bij je database? Of ben je code-first aan de gang? (Weet je het verschil tussen die twee uberhaupt?)

In principe heb je daar werkende code staan. Maar, wat je iig -niet- moet doen is je projecten in je viewbag gooien. Pass ze mee in de view als argument.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • kevinkrs
  • Registratie: Juni 2010
  • Laatst online: 18:24
Grijze Vos schreef op maandag 26 november 2012 @ 23:45:
Hoe ziet je database eruit? Wat voor EF model heb je gemaakt bij je database? Of ben je code-first aan de gang? (Weet je het verschil tussen die twee uberhaupt?)

In principe heb je daar werkende code staan. Maar, wat je iig -niet- moet doen is je projecten in je viewbag gooien. Pass ze mee in de view als argument.
Zou inderdaad netter zijn, maar volgens mij maakt het voor het resultaat niet uit?
Ik heb dit voor mijn in mijn database staan:

Afbeeldingslocatie: http://www.imgdumper.nl/uploads6/50b3f217dfb5b/50b3f217df387-db.png

Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 28-02 01:01
Laat je code first models eens zien want als je zelf je DbSet gaat defineren gebruik je geen EDMX models meer.

Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 04-07 15:01
kevinkrs schreef op maandag 26 november 2012 @ 23:50:
[...]

Zou inderdaad netter zijn, maar volgens mij maakt het voor het resultaat niet uit?
Strongly typed models maakt in de uiteindelijke maintenance fase van een applicatie wel degelijk uit. Daarnaast heb je ze gewoon nodig als je een beetje efficient wilt werken met de geavanceerdere features van MVC's views, zoals display en editor templates.

Acties:
  • 0 Henk 'm!

  • Phyxion
  • Registratie: April 2004
  • Niet online

Phyxion

_/-\o_

Je moet voortaan ook even gebruik gaan maken van using statements:
C#:
1
2
3
4
using (SomeEntities entities = new Entities())
{
    return entities.Projects.First(); //etc
}


Voor de .Projects moet je even "Add code generation item" doen (rechtermuis knop op het model) en dan EF 5.x DbContext Generator aanklikken.
Megamind schreef op dinsdag 27 november 2012 @ 08:11:
Laat je code first models eens zien want als je zelf je DbSet gaat defineren gebruik je geen EDMX models meer.
Precies, als je in EDMX models bezig gaat kan je gewoon rechtermuisknop -> "Generate database from model" doen, die even in SQL plakken en gaan met die banaan. Bij code-first hoef je alleen de classes maar aan te maken en klaar is kees (tables e.d. kunnen automatisch worden aangemaakt) :)
In de meeste gevallen wil je using gebruiken voor de performance. Er zijn echter uitzonderingen, lees meer op MSDN: Performance Considerations (Entity Framework)

[ Voor 88% gewijzigd door Phyxion op 27-11-2012 14:17 ]

'You like a gay cowboy and you look like a gay terrorist.' - James May


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Phyxion schreef op dinsdag 27 november 2012 @ 14:11:
Je moet voortaan ook even gebruik gaan maken van using statements:
Waarom dan? ;)

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Acties:
  • 0 Henk 'm!

  • kevinkrs
  • Registratie: Juni 2010
  • Laatst online: 18:24
Ik ben erachter wat er fout gaat, en het werkt nu inmiddels al. Het probleem was dat hij in de oude visual studio bepaalde context bestanden aanmaakte. En door een bug niet in de versie van 2012. na een update (http://www.microsoft.com/...visual-studio-2012-update) installeert, werkt het perfect :)
Pagina: 1