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;
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
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
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