Laden...

OrderBy Related Entities

Erstellt von Diräkt vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.228 Views
D
Diräkt Themenstarter:in
615 Beiträge seit 2009
vor 13 Jahren
OrderBy Related Entities

verwendetes Datenbanksystem: MS SQL 2008, EF 4

Hallo Leute 😃

Ich quäle mich gerade mit einem Problem rum :

-> Es ist ja nicht möglich RELATED ENTITIES zu sortieren
--> Dieses vorhaben müsste ungefähr so implementiert werden :


  var query = (from relevanz in db.RMRelevanzSkalaMaster
                             where relevanz.RMKategorienBuild.KategorienBuildID == CatBuildID
                             select new 
                             {
                                 RMRelevanzSkalaMaster = relevanz,
                                 RMRelevanzSkala = (from r in relevanz.RMRelevanzSkala
                                                    orderby r.Abweichung
                                                    select r)
                             }).FirstOrDefault();

**Frage, Problem 😗*

Das ist ja alles super und toll ! ABER : In meinem Fall kann ich für die Weiterverarbeitung der Daten keine Anonymen Typen brauchen, auf Dynamic stehe ich auch nicht so... ALSO wird aus :

select new
{
...
}

ein

select new RMRelevanzSkalaMaster
{
...
}

doch aus irgend welchen Gründen kann ich die Eigenschaften nicht korrekt zuweisen, einige fehlen etc.... Wenn ich aber eine Instanz von RMRelevanzSkalaMaster erstelle, habe ich alle Properties zur Auswahl....
(siehe screenshot)

Beste Grüsse und besten Dank fürs "unter die Achseln greifen"

Diräkt

EDIT :

Klar ich könnte die Klasse selbst instanzierne und danach alles neu zuweisen, aber das ist erstens nicht schön und absoluter overhead, wie mach ich das besesr ?

RMRelevanzSkalaMaster result = new RMRelevanzSkalaMaster();

                query.RMRelevanzSkala.ForEach(i => result.RMRelevanzSkala.Add(i));
                result.Betrag = query.RMRelevanzSkalaMaster.Betrag;
                result.Titel = query.RMRelevanzSkalaMaster.Titel;
C
24 Beiträge seit 2009
vor 13 Jahren

Welche Properties fehlen dir denn? IMO vermisst du Methoden und Events des Objektes. Diese kannst du aber in dem Zusammenhang nicht aufrufen und dementsprechend werden sie vom IntelliSense ausgeblendet. Sie sind jedoch vorhanden.

Chris

1.378 Beiträge seit 2006
vor 13 Jahren

In Linq2Entities kann man leider keine Objekte mit Parametern instanzieren und Methodenaufrufe wie .Add() gehen sowieso nicht.

Ich hab das bei mir so gelöst(bin nicht ganz zufrieden damit), dass die Collections in meinen Klassen immer vom Typ IEnumerable<T> sind. Damit kann ich direkt meine Subabfrage zuweisen.

Beispiel:


return grp => new FilterGroupDto
                {
                    Id = grp.ID,
                    Name = grp.Name,
                    RelationText = grp.Relation,
                    Filter = grp.tblConcreteFilter.Select(ConcreteFilterConverter)
                              .Concat<IFilterDto>(grp.tblFilterGroup1.Select(FilterGroupConverter))
                };

und FilterGroup schaut bei mir so aus:


    public class FilterGroupDto
    {
        public FilterGroupDto()
        {
            Filter = new IFilterDto[0];
        }

        public int Id { get; set; }

        public string Name { get; set; }

        public IEnumerable<IFilterDto> Filter { get; set; }

        public string RelationText { get; set; }
    }

Lg XXX

D
Diräkt Themenstarter:in
615 Beiträge seit 2009
vor 13 Jahren

Hallo

Besten Dank für Eure Antworten.

@Chris.B

Ich meine die Navigation.Properties, sie sind verschwunden.
(Beispiel : RMRelevanzSkala) (RMRelevanzSkalaMaster-> RMRelevanzSkala (1:N))

@xxxprod

Besten Dank für Deine Ausführung.

Wenn ich es richtig verstehe hast du also eine eigene Klasse dafür gemacht ?!

Sollte dem so sein, in meinem Szenario möchte ich dies um jeden Preis verhindern. Ich möchte die EF Klassen dafür benutzen (automatisch generierten).

Was ich nicht verstehe :

Senzario1
-> Ich erstelle eine Klasse
-> ...... select new MeineKlasse
-> Ich kann alles zuweisen etc.

Szenario2
-> Ich erstelle das EF Model
-> .... select new EineEFKlasse
-> Kann alles zuweisen, aber nicht die "Navigation Properties"
(z.B für sortierte unter-abfragen)

Szenario2.1
-> Ich erstellle das EF Model
-> myEFCLass c = new myEFClass();
-> c.MyNavigationProperty = myOtherEntity;

->Geht doch, also was ist mit Senario 2 los <-

Besten Dank für Eure Zeit

Diräkt