<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>Daniel's Blog - Windows</title>
    <link>http://s9y.daniel-rosendorf.de/</link>
    <description>Conquering .NET one character at a time ...</description>
    <dc:language>de</dc:language>
    <generator>Serendipity 1.5.5 - http://www.s9y.org/</generator>
    <pubDate>Mon, 17 Aug 2009 14:09:50 GMT</pubDate>

    <image>
        <url>http://s9y.daniel-rosendorf.de/templates/bulletproof/img/s9y_banner_small.png</url>
        <title>RSS: Daniel's Blog - Windows - Conquering .NET one character at a time ...</title>
        <link>http://s9y.daniel-rosendorf.de/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>.NET Entity Framework und das Nachladen von Relationen</title>
    <link>http://s9y.daniel-rosendorf.de/archives/28-.NET-Entity-Framework-und-das-Nachladen-von-Relationen.html</link>
            <category>Development</category>
            <category>.Net/C#</category>
            <category>Windows</category>
    
    <comments>http://s9y.daniel-rosendorf.de/archives/28-.NET-Entity-Framework-und-das-Nachladen-von-Relationen.html#comments</comments>
    <wfw:comment>http://s9y.daniel-rosendorf.de/wfwcomment.php?cid=28</wfw:comment>

    <slash:comments>35</slash:comments>
    <wfw:commentRss>http://s9y.daniel-rosendorf.de/rss.php?version=2.0&amp;type=comments&amp;cid=28</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Rosendorf)</author>
    <content:encoded>
    &lt;p&gt;Im Moment bin ich etwas mit dem EF zu Gange, allerdings tue ich mir etwas schwer (ist das erste Mal &lt;img src=&quot;http://s9y.daniel-rosendorf.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; ). Eine “Eigenart” von EF ist, dass alle Referenzen explizit geladen werden müssen.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Ein Beispiel: Ein Customer hat mehrere Orders, genau eine CustomerAddress und jede Order hat eine DeliveryAddress.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Das hier geht ohne Probleme:&lt;/p&gt; &lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;var customers = from customer in entities.Customers&lt;br /&gt;
            select customer;&lt;br /&gt;
&lt;br /&gt;
foreach (Customer customer in customers) {&lt;br /&gt;
    Console.WriteLine(customer.CustomerNumber);&lt;br /&gt;
}&lt;/pre&gt; &lt;br /&gt;
&lt;p&gt;Das hier wirft allerdings eine NullReferenceException (bei :N Relationen würde hier eine leere, typisierte EntityCollection stehen):&lt;/p&gt; &lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;var customers = from customer in entities.Customers&lt;br /&gt;
            select customer;&lt;br /&gt;
&lt;br /&gt;
foreach (Customer customer in customers) {&lt;br /&gt;
    Console.WriteLine(customer.CustomerAddress.Street);&lt;br /&gt;
}&lt;/pre&gt; &lt;br /&gt;
&lt;p&gt;Um die Exception (bzw. die leere Collection) zu vermeiden, muss die Suche auf die Customer Objekte so aussehen:&lt;/p&gt; &lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;var customers = from customer in entities.Customers.Include(&quot;CustomerAddress&quot;)&lt;br /&gt;
            select customer;&lt;/pre&gt; &lt;br /&gt;
&lt;p&gt;Dadurch wird das CustomerAddress-Objekt automatisch mit geladen. So weit so gut ..&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Was passiert jetzt, wenn wir für alle Orders eines Customers z.B. die Straße der DeliveryAddress ausgeben wollen? &lt;/p&gt; &lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;foreach (Customer customer in customers) {&lt;br /&gt;
    foreach (Order order in customer.Orders) {&lt;br /&gt;
        Console.WriteLine(order.DeliveryAddress.Street);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/pre&gt; &lt;br /&gt;
&lt;p&gt;Es passiert … gar nichts. Die Orders sind nämlich gar nicht geladen, deswegen wird die Schleife auch gar nicht betreten. Abhilfe schafft da die Load Methode der Orders Eigenschaft. Einmal Aufrufen und die Orders sind von der DB nachgeladen.&amp;#160; Alternativ lässt sich auch der Include erweitern: &lt;/p&gt; &lt;br /&gt;
&lt;pre class=&quot;brush: csharp;&quot;&gt;var customers = from customer in entities.Customers.Include(&quot;CustomerAddress&quot;).Include(&quot;Orders&quot;)&lt;br /&gt;
            select customer;&lt;/pre&gt; &lt;br /&gt;
&lt;p&gt;&lt;strong&gt;ACHTUNG:&lt;/strong&gt; Diese Methode funktioniert nur für Properties am “Haupt”objekt der jeweiligen Abfrage (hier Customer).&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Dann sind wir im oberen Beispiel allerdings wieder bei der NullReferenceException. Bei :1 Relationen ist das Spiel etwas anders: Hier wird eine zusätzliche &amp;lt;Eigenschaft&amp;gt;Reference Eigenschaft in der entsprechenden Entity generiert (im vorliegenden Beispiel hat ein Objekt der Klasse Order neben der DeliveryAddress Eigenschaft auch noch eine DeliveryAddressReference Eigenschaft), bei der ihr dann wiederum die Load Methode nutzen könnt, um die Referenz auch tatsächlich zu laden.&lt;/p&gt; &lt;br /&gt;
&lt;p&gt;Insgesamt für mich etwas unintuitiv (doofes Wort &lt;img src=&quot;http://s9y.daniel-rosendorf.de/templates/default/img/emoticons/tongue.png&quot; alt=&quot;:-P&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;), aber wenn man weiß, worauf man achten muss, geht es. Auf jeden Fall vermeidet das EF dadurch erst mal unnötige DB-Abfragen.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 17 Aug 2009 15:41:18 +0200</pubDate>
    <guid isPermaLink="false">http://s9y.daniel-rosendorf.de/archives/28-guid.html</guid>
    <category>c#</category>
<category>development</category>
<category>.net</category>

</item>
<item>
    <title>100 Meter hürden mit .net MVC und Entity Framework auf IIS 6/SQL SERVER 2000</title>
    <link>http://s9y.daniel-rosendorf.de/archives/26-100-Meter-huerden-mit-.net-MVC-und-Entity-Framework-auf-IIS-6SQL-SERVER-2000.html</link>
            <category>Development</category>
            <category>.Net/C#</category>
            <category>Software</category>
            <category>Windows</category>
    
    <comments>http://s9y.daniel-rosendorf.de/archives/26-100-Meter-huerden-mit-.net-MVC-und-Entity-Framework-auf-IIS-6SQL-SERVER-2000.html#comments</comments>
    <wfw:comment>http://s9y.daniel-rosendorf.de/wfwcomment.php?cid=26</wfw:comment>

    <slash:comments>64</slash:comments>
    <wfw:commentRss>http://s9y.daniel-rosendorf.de/rss.php?version=2.0&amp;type=comments&amp;cid=26</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Rosendorf)</author>
    <content:encoded>
    &lt;p&gt;Gestern war wieder einer dieser Tage, an denen kurz vor Feierabend etwas aufschlägt, dass dann ums Verrecken nicht funktionieren will. Im Falle des gestrigen Tages war es ein auf dem &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/www.asp.net/mvc/&#039;);&quot;  href=&quot;http://www.asp.net/mvc/&quot; target=&quot;_blank&quot;&gt;ASP.NET MVC Framework&lt;/a&gt; basierendes Web.&lt;/p&gt;  &lt;p&gt;Unser Kunde wollte sich das Web anschauen, allerdings war dieses bisher nicht auf einem Server installiert, sondern nur auf der Kiste des betroffenen Entwicklers (allerdings war der Quellcode natürlich in SVN, also keine Panik &lt;img src=&quot;http://s9y.daniel-rosendorf.de/templates/default/img/emoticons/tongue.png&quot; alt=&quot;:-P&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; ).&lt;/p&gt;  &lt;p&gt;Kurz zum Vergleich die Setups:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Setup des Entwicklers:&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;SQL Server 2005 Express&lt;/p&gt;    &lt;p&gt;Ins VS integrierter Webserver&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Setup des Stage Servers:&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;MS SQL Server 2000&lt;/p&gt;    &lt;p&gt;IIS 6&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Das Ganze ging zu wie beim Hürdenlauf:&lt;/p&gt;  &lt;h4&gt;1. Hürde: SQL Datenbank Version&lt;/h4&gt;  &lt;p&gt;Problem: Datenbank war nur lokal und im SQL Server 2005 Format vorhanden. &lt;/p&gt;  &lt;p&gt;Lösung: Die Datenbank auf dem Stage Server angelegt und per SQL Server Management Studio alles vom lokalen Server auf den Stage-Server rüber kopiert (hat übrigens erschreckend reibungslos funktioniert).&lt;/p&gt;  &lt;h4&gt;2. Hürde: Datenbank-Verbindung&lt;/h4&gt;  &lt;p&gt;Problem: In der &lt;em&gt;web.config&lt;/em&gt; ist natürlich nur der Verbindungsstring für die lokale DB des Entwicklers vorhanden.&lt;/p&gt;  &lt;p&gt;Lösung: Den entsprechenden String anpassen und gleich (um zukünftige Deployments zu erleichtern) das entsprechende Tag in der &lt;em&gt;web.config&lt;/em&gt; per &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/msdn.microsoft.com/de-de/library/ms228167.aspx&#039;);&quot;  href=&quot;http://msdn.microsoft.com/de-de/library/ms228167.aspx&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;configSource&lt;/em&gt;&lt;/a&gt; Attribut in eine eigene Datei auslagern. Hier muss ggf. nach dem Veröffentlichen drauf geachtet werden, dass auch die korrekte Datei im gleichen Verzeichnis liegt wie die &lt;em&gt;web.config&lt;/em&gt;, sonst fliegt eine Exception.&lt;/p&gt;  &lt;h4&gt;3. Hürde: 404 beim Aufrufen der Default.aspx nach dem Veröffentlichen des Webs&lt;/h4&gt;  &lt;p&gt;Problem: MVC Framework nicht auf dem Server installiert&lt;/p&gt;  &lt;p&gt;Lösung: Lokale Kopie des Frameworks beim Veröffentlichen mitgeliefert (bei den &lt;em&gt;References&lt;/em&gt; im entsprechenden Projekt die Eigenschaft &lt;em&gt;“Copy Local” von &lt;em&gt;System.Web.Mvc&lt;/em&gt; und ggf.&lt;em&gt;MvcSiteMap.Core&lt;/em&gt;&lt;/em&gt; auf &lt;strong&gt;true&lt;/strong&gt; setzen) (&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx&#039;);&quot;  href=&quot;http://haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx&quot; target=&quot;_blank&quot;&gt;Quelle&lt;/a&gt;).&lt;/p&gt;  &lt;h4&gt;4. Hürde: Aufruf der Default.aspx funktioniert, aber es erscheint ein 404 nach der Umleitung auf die default Route (z.b. Home/Start)&lt;/h4&gt;  &lt;p&gt;Problem: Für die Routen wird die &lt;em&gt;aspnet_isapi.dl&lt;/em&gt; nicht aufgerufen, da keine &lt;em&gt;.aspx&lt;/em&gt; Erweiterung in der URL vorhanden ist.&lt;/p&gt;  &lt;p&gt;Lösung: Mögliche Lösungen findet ihr in &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/&#039;);&quot;  href=&quot;http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/&quot; target=&quot;_blank&quot;&gt;diesem Beitrag&lt;/a&gt; in &lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/blog.codeville.net/&#039;);&quot;  href=&quot;http://blog.codeville.net/&quot; target=&quot;_blank&quot;&gt;Steve Sanderson&#039;s Blog&lt;/a&gt;. Wir haben uns in unserem Fall für Methode 1 entschieden, da es nur zu Demonstrationszwecken eingerichtet wurde.&lt;/p&gt;  &lt;h4&gt;5. Hürde: SqlException beim Ausführen eines Queries über das EF&lt;/h4&gt;  &lt;p&gt;Problem: .NET generiert beim Erstellen DB-spezifischen Code. Entwickelt wurde das Web auf SQL Server 2005 (wenn auch nur Express), veröffentlich wurde es auf einen Server mit SQL Server 2000 installiert, daher die SqlException.&lt;/p&gt;  &lt;p&gt;Lösung: Öffnet eure &lt;em&gt;.edmx&lt;/em&gt; Datei in einem XML Editor (über &lt;em&gt;Rechsklick –&amp;gt; “Open with …”&lt;/em&gt;&amp;#160; im Solution Explorer gehts auch im Visual Studio), sucht nach dem &amp;lt;Schema&amp;gt; Tag. Dieses sollte ein Attribut &lt;em&gt;ProviderManifestToken&lt;/em&gt; haben, welches im Falle des Providers &lt;em&gt;System.Data.SqlClient &lt;/em&gt;die Version des MS Sql Servers angibt. Diesen Wert ändert ihr auf &lt;strong&gt;2000&lt;/strong&gt;, veröffentlicht das Web erneut und es sollte funktionieren (&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/stackoverflow.com/questions/1031161/rownumber-is-not-a-recognized-function-name-incorrect-syntax-near-the-keyword&#039;);&quot;  href=&quot;http://stackoverflow.com/questions/1031161/rownumber-is-not-a-recognized-function-name-incorrect-syntax-near-the-keyword&quot; target=&quot;_blank&quot;&gt;Quelle&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;Und damit haben wir (nach knapp 3 Stunden Verspätung) das Ziel erreicht … und ziemlich viel gelernt &lt;img src=&quot;http://s9y.daniel-rosendorf.de/templates/default/img/emoticons/tongue.png&quot; alt=&quot;:-P&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 28 Jul 2009 12:25:00 +0200</pubDate>
    <guid isPermaLink="false">http://s9y.daniel-rosendorf.de/archives/26-guid.html</guid>
    <category>ASP.NET</category>
<category>Development</category>
<category>IIS</category>
<category>MVC</category>
<category>.NET</category>

</item>
<item>
    <title>Kein .NET Framework verfügbar nach Installation vom IIS</title>
    <link>http://s9y.daniel-rosendorf.de/archives/23-Kein-.NET-Framework-verfuegbar-nach-Installation-vom-IIS.html</link>
            <category>Development</category>
            <category>.Net/C#</category>
            <category>Software</category>
            <category>Windows</category>
    
    <comments>http://s9y.daniel-rosendorf.de/archives/23-Kein-.NET-Framework-verfuegbar-nach-Installation-vom-IIS.html#comments</comments>
    <wfw:comment>http://s9y.daniel-rosendorf.de/wfwcomment.php?cid=23</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://s9y.daniel-rosendorf.de/rss.php?version=2.0&amp;type=comments&amp;cid=23</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Rosendorf)</author>
    <content:encoded>
    &lt;p&gt;Vor (mittlerweile) einigen Wochen hab ich hier im Büro auf unserer Stage-Maschine CC.NET installiert und in diesem Zuge natürlich auch das Web-Dashboard getestet. Allerdings hat mich beim Aufruf des Dashboards immer nur ein 404 begrüßt, obwohl das virtuelle Verzeichnis korrekt eingerichtet war (zumindest dachte ich das). &lt;/p&gt;  &lt;p&gt;Ursache das Problems: ASP.NET bzw. das .NET Framework war im IIS nicht verfügbar. Nachdem ich Google befragt habe, fand ich folgende Lösung:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;.NET Framework SDK Command Prompt auf der betroffenen Maschine öffnen &lt;/li&gt;    &lt;li&gt;aspnet_regiis –i ausführen &lt;/li&gt;    &lt;li&gt;Im IIS-Manager unter “Webdiensterweiterungen” ASP.NET zulassen &lt;/li&gt;    &lt;li&gt;Im betroffenen virtuellen Verzeichnis unter “Eigenschaften” im Tab “ASP.NET” die gewünschte Version auswählen &lt;/li&gt;    &lt;li&gt;Im bevorzugten Browser das betroffene Verzeichnis aufrufen und (hoffentlich) glücklich werden &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Diese Problem tritt wenn ich mich Recht erinnere nur dann auf, wenn das .NET Framework &lt;strong&gt;vor &lt;/strong&gt;dem IIS installiert wird. Falls die Installation anders herum erfolgt, wird ASP.NET bei der Installation des .NET Frameworks automatisch im IIS registriert.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 08 Jun 2009 10:59:50 +0200</pubDate>
    <guid isPermaLink="false">http://s9y.daniel-rosendorf.de/archives/23-guid.html</guid>
    
</item>
<item>
    <title>Windows Install Clean Up</title>
    <link>http://s9y.daniel-rosendorf.de/archives/16-Windows-Install-Clean-Up.html</link>
            <category>Windows</category>
    
    <comments>http://s9y.daniel-rosendorf.de/archives/16-Windows-Install-Clean-Up.html#comments</comments>
    <wfw:comment>http://s9y.daniel-rosendorf.de/wfwcomment.php?cid=16</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://s9y.daniel-rosendorf.de/rss.php?version=2.0&amp;type=comments&amp;cid=16</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Rosendorf)</author>
    <content:encoded>
    &lt;p&gt;&lt;a onclick=&quot;javascript: pageTracker._trackPageview(&#039;/extlink/support.microsoft.com/kb/290301&#039;);&quot;  href=&quot;http://support.microsoft.com/kb/290301&quot; target=&quot;_blank&quot;&gt;Windows Install Clean Up&lt;/a&gt; ist ein kleines Tool, dass sehr n&amp;#252;tzlich ist, wenn es Probleme mit Microsofts hauseigenem MSI Installer gibt. Solltet ihr Probleme haben, ein Programm zu (de-)installieren, hilft euch dieses kleine Progr&amp;#228;mmchen weiter. Da es mir gerade mal wieder ein Problem behoben hat, an dem ich schon ein paar Stunden zu knacken hatte, wollte ich das nur mal kurz erw&amp;#228;hnen ... for future reference &lt;img src=&quot;http://s9y.daniel-rosendorf.de/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 07 Apr 2008 17:04:37 +0200</pubDate>
    <guid isPermaLink="false">http://s9y.daniel-rosendorf.de/archives/16-guid.html</guid>
    
</item>

</channel>
</rss>
