Sök  
 
Skribent Inlägget Löst
Google
 
     

  Forum » C# vb.net c++ » Repository  
 
Skriven av: Stefan | den 23 juli 2010 Kl 13:45
Repository Tråden är löst
Efter påtryckningar från Vimpyboy har jag byggt mitt nya projekt med ett Repository, Entity Framework och POCO-objekt. (http://weblogs.asp.net/mikaelsoderstrom/archive/2010/06/12/anv-228-nd-poco-st-246-det-i-entity-framework-4.aspx)

Jag testade att lägga till data i repositoryt, och det fungerade bra, datan hamnade i databasen där den hör hemma. Sen försöker jag hämta data, men då innehåller repositoryt inte någon data längre.

Jag har bara följt artikeln rakt av, och datan hämtas med följande klass: http://www.aspsidan.se/code/default.asp?c=25029

Kod:

  IPhotographerRepository _repository = new PhotographerRepository();
  List<Photographer> photographers = _repository.GetAll();
  list.DataSource = photographers;
  list.DataBind();


PhotographerRepository ärver EntityRepository

Vad gör jag för fel?

Antal svar 8




Skriven av: BlackMustard | den 23 juli 2010 Kl 15:51
har du debuggat och kollat att det finns data även inne i repositoryt (alltså att något verkligen hämtas från db)?
Skriven av: Stefan | den 23 juli 2010 Kl 16:53
Jag har inte lyckats debugga så jag kommer fram till något databasanrop.
Jag har tittat i databasen och VET att det finns en fotograf där, och jag har debuggat, men bara lyckats lista ut att listan som returneras är tom.
Skriven av: vimpyboy | den 23 juli 2010 Kl 17:07
Vad händer om du testar det här?

Kod:
using (var ctx = new LiveFotoContext())
{
  var p = ctx.Photographers.ToList();
}



Får p något värde?
Skriven av: Stefan | den 24 juli 2010 Kl 14:07
Nej, men det fick mig att fundera och felsöka ett steg längre.
Det visar sig att jag har två databaser på min MySQL-server, en som heter livefoto och en som heter db_livefoto. Jag hade tittat i fel databas, så det fanns faktiskt ingen data i den databasen jag försökte hämta från.

Vilket alltså innebär att det är att spara informationen som inte fungerar.

Kod:
  protected void btn_Click(object sender, EventArgs e)
  {
  Photographer p = new Photographer();
  p.mail = tbMail.Text;
  p.orgnr = tbOrgNr.Text;
  p.name = tbContact.Text;
  p.company = tbCompany.Text;

  IPhotographerRepository _repository = new PhotographerRepository();
  _repository.Add(p);

  Response.Write("Sparad!");
  }



Och metoden Add kommer härifrån: http://www.aspsidan.se/code/default.asp?c=25029
Kod:
  public void Add(T entity)
  {
  using (var ctx = new LiveFotoContext())
  {
  _objectSet.AddObject(entity);
  ctx.SaveChanges();
  }
  }


Skriven av: Stefan | den 24 juli 2010 Kl 14:18
Jag löste det genom att bygga om Repositorybasklassen så här:
http://www.aspsidan.se/code/default.asp?c=25030

Jag tyckte att det verkade konstigt att jag lägger till data i ett ObjectSet men sen sparar ett nytt Context.
Skriven av: vimpyboy | den 24 juli 2010 Kl 15:10
Inte lätt att felsöka i fel databas. :)
Skriven av: Stefan | den 24 juli 2010 Kl 15:32
Nej, verkligen inte... Men vad säger du om att ha ett globalt context i Repository-klassen, är det rätt eller fel?

Den klassen du hade skrivit i din artikel hade ju ett nytt context när det skulle sparas, men jag tycker det känns fel. Hade du slarvat i artikeln, eller har jag fattat fel?
Skriven av: vimpyboy | den 24 juli 2010 Kl 15:33
Kan inte minnas. Är möjligt att det följde med någon debug-kod när jag skrev den som jag glömde plocka bort i artikeln.

Det bör fungera utan ett nytt context.
 
     


  Svara på inlägg  
 
Du måste vara medlem på ASPsidan för att kunna skriva i forumet.
För att bli medlem klicka här.
 
     

  » Logga in  
 
Användarnamn

Lösenord


Du måste vara inloggad
 
     

  » Bli medlem  
  Bli medlem på ASPsidan!  
     

     
  Microsoft  
     

  » Partners  
  Comsolvia  
     

  » Senast online  
  Endast för inloggade  
  Antal inloggade: 3  
     

Copyright © 2007 www.ASPsidan.se
Ipeer sponsrar ASPsidan med Dedikerad Server
ASPsidan RSS
   
 XHTML / CSS
Det tog 0,3281 sekunder att ladda sidan