Hallo,
ich habe eine Grundsätzliche Frage zu obiger Problematik.
ich weis nicht genau, wie ich es beschreiben soll.
Ich habe ein VieModel Names EventListViewModel, dies ist das ViewModel für eine Liste aller Events und ist an ein Control in einer View gebunden.
Die Liste an sich enthält Items als ObservableCollection vom Typ EventListItemViewModel da jedes Item dieser Liste auch sein eigenens ViewModel hat.
Nun kann ich die Daten auslesen und in eine ObservableCollection packen, allerdings muss diese Collection vom gleichen Typ sein, wie das DBSet also der ModellTyp.
Wie bekomme ich nun den Convert hin vom ModelTyp zum VieModeltyp.
Vielleicht ein wenig Code:
in meinem EventListViewModel gibt es:
An dieser Stelle würde ich gerne mit
Bin für jeden Tip dankbar
Grüße
ich habe eine Grundsätzliche Frage zu obiger Problematik.
ich weis nicht genau, wie ich es beschreiben soll.
Ich habe ein VieModel Names EventListViewModel, dies ist das ViewModel für eine Liste aller Events und ist an ein Control in einer View gebunden.
Die Liste an sich enthält Items als ObservableCollection vom Typ EventListItemViewModel da jedes Item dieser Liste auch sein eigenens ViewModel hat.
Nun kann ich die Daten auslesen und in eine ObservableCollection packen, allerdings muss diese Collection vom gleichen Typ sein, wie das DBSet also der ModellTyp.
Wie bekomme ich nun den Convert hin vom ModelTyp zum VieModeltyp.
Vielleicht ein wenig Code:
in meinem EventListViewModel gibt es:
C#-Quellcode
- public ObservableCollection<EventListItemViewModel> UpcomingEvents { get; set; } //eine Liste für die Filterung
- public ObservableCollection<BazaarEvent> AllEvents { get; set; } //die Collection mit dem ModelTyp
- private ObservableCollection<EventListItemViewModel> _items;
- public ObservableCollection<EventListItemViewModel> Items
- {
- get => _items;
- set
- {
- if (_items == value) return;
- _items = value;
- UpcomingEvents = new ObservableCollection<EventListItemViewModel>(_items.Where(item => item.EventDate <= EventDateFilter).OrderBy(item => item.EventDate));
- }
- }
- //BazaarDaten für den Responsible laden
- AllEvents = _ctx.BazaarEvents
- .Include(rp => rp.ResponsiblePerson) //includieren, damit Zugriff auf die Details besteht (LogIn Daten, Name usw.)
- .ThenInclude(org => org.Organization) //danach includieren um Zugriff auf die Organisation Daten zu erhalten
- .Include(pe => pe.Sellers) //Sellers ist vom Typ ICollection<PersonBazaarEvent>, muss includiert werden um an die Verkäufer ran zu kommen
- .ThenInclude(p => p.Person) //von den Verkäufern includieren um auf die Details Zugriff zu bekommen (Name, Verkäufernummer usw.)
- .ThenInclude(a => a.Articles) //wiederum von der Person der Sellers includieren um auf desen Artikel Details zu kommen (Artikelnr., Beschreibung usw.)
- .AsNoTracking()
- .Where(p => p.ResponsiblePerson == person).ToObservableCollection(); //eigene Extension gebaut um die IQueryable in eine Observable zu casten
- //die Extension
- public static ObservableCollection<T> ToObservableCollection<T>(this IEnumerable<T> iEnumerable)
- {
- return new ObservableCollection<T>(iEnumerable);
- }
An dieser Stelle würde ich gerne mit
Items
weiterarbeiten und nicht mit AllEvents
Bin für jeden Tip dankbar
Grüße
"Hier könnte Ihre Werbung stehen..."