Andreas Mazatis

Andreas Mazatis

  • 1.7k
  • 33
  • 754

Performance problems with SQLite and Linq Selection

Jan 14 2021 4:02 PM
I can not manage to select the data in a flat structure and detailed information in a array of the same structure together in one select.
 
If I do it one after the other, the performance is pretty bad.
 
Perhaps someone can help me, here is an extract from the structures, tables and the select statement.
Database
  1. public class MovieDb  
  2. {  
  3. public string MovieGuid {getset;}  
  4. public string Title {getset;}  
  5. public string Plot {getset;}  
  6. public int Time {getset;}  
  7. public string Langu {getset;}  
  8. public int FSK {getset;}  
  9. ...  
  10. }  
  11. public class ActorDb  
  12. {  
  13. public string ActorGuid {getset;}  
  14. public string DisplayName {getset;  
  15. public string Firstname {getset;  
  16. public string Lastname {getset;  
  17. ...  
  18. }  
  19. public class ActorsInMovieDb  
  20. {  
  21. public string MovieGuid {getset;}  
  22. public string ActorGuid {getset;}  
  23. public string Role {getset;}  
  24. }  
  25. public class ActorsInMovieDatabaseView  
  26. {  
  27. public string MovieGuid {getset;}  
  28. public string ActorGuid {getset;}  
  29. public string DisplayName {getset;}  
  30. public string Role {getset;}  
  31. }  
View Classes
  1. public class ActorItem  
  2. {  
  3. public string MovieGuid {getset;}  
  4. public string ActorGuid {getset;}  
  5. public string DisplayName {getset;}  
  6. public string Role {getset;}  
  7. }  
  8. public class MovieItem  
  9. {  
  10. public string MovieGuid {getset;}  
  11. public string Title {getset;}  
  12. public string Plot {getset;}  
  13. public int Time {getset;}  
  14. public string Langu {getset;}  
  15. public int FSK {getset;}  
  16. ...  
  17. public List<ActorItem> Actors {getset;}  
  18. }  
Select
  1. foreach (MovieMaster record in database.MovieDb)  
  2. {  
  3. movieItem = new MediaItem();  
  4. mediaItem = MappingMediaItem(record);  
  5. // --- Now, select the actors  
  6. movieItem.Actors = database.ActorsInMovieDatabaseView.AsNoTracking().Where(x => x.MovieGuid == record.MovieGuid).ToList();  
  7. // Select(a => new  
  8. // {  
  9. // DisplayName = a.DisplayName,  
  10. // Role = a.Role  
  11. // }  
  12. //).ToList();  
  13. }  

Answers (2)