28. marts 2012 - 09:31Der er
5 kommentarer og 1 løsning
Entity Framework - Gemme objekter i SQL Database
Hejsa.
Jeg er ved at sætte mig ind i Entity Frameworket. Jeg har lige et lille spørgsmål. Sikkert en simpel ting....
Jeg har 2 tabeller.
1. User 2. Address
I databasen har jeg lavet en realtion mellem User tabellen og address. Dvs alle records i user tabellen har en reference til en address record i address tabellen.
Hvis jeg bare skal gemme en address record, så virker alt fint. Men så snart jeg skal gemme en user record i databasen får jeg en fejl, som jeg ikke kan finde en løsning på :-(
Håber en kan hjælpe.
Jeg får følgende fejl :
"The EntityKey property can only be set when the current value of the property is null."
EntityKey for begge objekter er 'ID' feltet. Som er af typen Guid.
Fejlen lå i den Userstatus (et objekt) jeg også satte på en user.
Den trak jeg nemlig ud fra databasen, og det skete jo så i en anden context, hvorfor den selvfølgelig ikke kunne tilføjes til den nye context.
Det må vist være en EF begynder fejl :-)
Her er den kode jeg brugte til at sætte userstatus og som var synderen.
Den er nu lavet om, så den tager Datacontext med som parameter og ikke laver sin egen.
public static Userstatus Created { get { Guid status = Guid.Parse(Constants.IDs.UserStatusCreated); using (var dc = new DataContext()) { return dc.Userstatus.FirstOrDefault(a => a.ID == status); } } }
De har forskellige måder at håndtere mapningen af autogenerated key, og det er helt sikkert fixed.
5.0 får support for Enums ... YAH.
Men ... i forhold til 4 ... eller hvad version du nu bruger, så er der sket en del. Den version du bruger kom vist med VS 2010 ... og nu findes EF vist kun som en NuGet pakke.
Men ... jeg synes i hvert fald godt om EF :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.