Tags: , | Categories: LINQ, VB.Net, XML Posted by Christoph on 3/17/2009 10:47 AM | Comments (0)
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
Categories: LINQ Posted by Christoph on 2/18/2009 12: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
Tags: , | Categories: Entity Framework, LINQ, VB.Net Posted by Christoph on 1/15/2009 11:34 AM | Comments (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.