Hallo zusammen,
auch wenn Datasets nicht mehr so angesagt sind, nutze ich derzeit eins. Es sind folgende DataTables im Spiel:
Beziehungen:
Domains 1:n DomainElements
DomainElements 1:n TreeDetails
TreeNodes 1:n TreeDetails
Sinn ist, zu einem gewählten TreeNodes-Datensatz die Details anzuzeigen und auch editieren zu können (siehe Bild). Die Details eines TreeNodes-Satzes sollen dabei die "Klartexte" anzeigen, damit man sich nicht mit Fremdschlüsselwerten befassen muss. Ich sehe also zu jedem gewählten TreeNodes-Satz dessen Details mit Bedeutung der Domain und des DomainElements.
Mein Problem:
für den Lookup der Domaintexte eines gewählten TreeNodes-Satzes nutze ich via LINQ die Relation aus:
var qry = from Detail in dst.Details
where Detail.F_TreeNode_ID == intTreeNodeID
select new {
Detail.F_TreeNode_ID,
Detail.F_Domain_ID,
Detail.DomainRowParent.DomainCaption
};
Diese LINQ funktioniert, aber das Ergebnis ist nicht editierbar, vermutlich wegen des anonymen Typs. Das wird aber auch nicht besser, wenn ich den durch eine Testklasse ersetze.
Auch ein LINQ, der die Relation nachbaut (per join oder where) ist nicht editierbar.
Wie also kriege ich das hin, die TreeNodes "mit Klartext" zu sehen und editieren zu können?
Dankbar für jeden Rat
Martin
Im Endeffekt identischer Grund wie im Thema Linq Join und anschließender SaveChanges
Editierbar ist etwas nur, wenn die Projektion dem 1:1 Mapping entspricht; also die rohen Entitäten geladen werden.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo,
wenn ich nur die Fremdschlüssel anzeige und eingebe, klappt ja alles. Aber die Bedeutung wäre halt auch ganz schön.
Ein Weg wäre, die Klartexte über DataColumns mit Expression der Art Parent(RelationName).CaptionDE auszulesen. Das funktioniert, aber das Laden wird dadurch stark verlangsamt.