Ich hatte das Problem, zu einem bestehenden XML noch weitere Elemente hinzufügen zu müssen. Das XML war als String im System vorhanden, und da hab ich das ganze per LINQ gelösst:
Als erstes muss folgender Namespace als Referenz im Projekt eingebunden, und in der entsprechenden Klasse importiert sein:
Imports System.Xml.Linq
und dann funktioniert das ganze recht einfach so:
Dim Doc As XDocument = XDocument.Parse(XmlString)Dim Root As XElement = Doc.Element("root")Dim xNewElement As New XElement("newnode")xNewElement.Value = MyValuexNewElement.SetAttributeValue("id", MyID)Root.AddxNewElementReturn Doc.ToString
553dae36-4986-41a5-8bba-c24a55ea926a|0|.0
Categories: LINQ
Posted by
Christoph on
2/18/2009 1:59 PM |
Comments (0)
Man hat z.B. folgendes Objektmodell:
[Bestellung]
-> [Artikel]
-> [Kontakt]
Wenn man im EF per LINQ Objekte läd:
dim MyBestellung = from Best in Ctx.Bestellung where Best.id=2
werden die “Kinder” normalerweise nicht mitgeladen, und müssen per
nachgeladen werden.
Dies kann man aber auch direkt im ersten Query ausführen lassen, wenn man an das Objekt ein .Include anhängt:
dim MyBestellung = from Best in
Ctx.Bestellung.include("Artikel") where Best.id=2
Dies kann man, wenn das Objekt unterschiedliche Kinder hat, auch verbinden:
dim MyBestellung = from Best in
Ctx.Bestellung.include("Artikel").include("Kontakt") where Best.id=2
(Wichtig dabei: Die Anführungszeichen um die Typen nicht vergessen).
Ich habe diesen Hinweis hier gefunden:
http://blogs.msdn.com/bethmassi/archive/2008/12/10/master-details-with-entity-framework-explicit-load.aspx
4b713aa6-b839-476a-bcbc-47ea851fd95d|0|.0
In einem Projekt benutze ich das Microsoft Entity Framework um Daten aus der Datenbank an ein Gridview zu binden.
Nun will ich aber zeilenweise bestimmte Zellen ausblenden, wenn das Datenobjekt z.B. bestimmte Arten von Eigenschaften/Kindern hat.
Um im RowDataBound Handler des Gridview aber das jewilige Entity zu bekommen, benötigt man eine kleine Hilfsfunktion:
Public Function GetRowItem(Of TEntity As Class)(ByVal dataItem As Object) As TEntity Dim Entity = TryCast(dataItem, TEntity) If Entity IsNot Nothing Then Return Entity Dim td = TryCast(dataItem, ComponentModel.ICustomTypeDescriptor) If td IsNot Nothing Then Return DirectCast(td.GetPropertyOwner(Nothing), TEntity) Return NothingEnd Function
Danach kann man dann in der RowDataBound folgenden Code benutzen, um die Entität (in meinem Fall fom Typ "Attribute”) zu bekommen:
Private Sub gvAttribs_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvAttribs.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then Dim Attrib = GetRowItem(Of Attribute)(e.Row.DataItem) '-- Und hier gehts dann weiter ... End IfEnd Sub
Ich habe diesen Hinweis im MSDN Social gefunden.
d5922ab8-f07b-4e97-9fbd-d5758bf3a8cc|0|.0