<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" 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/"><channel><title>Dariusz quatscht : .NET Framework</title><link>http://blogs.msdn.com/dparys/archive/tags/.NET+Framework/default.aspx</link><description>Tags: .NET Framework</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Visual Studio 2010 + .NET Framework 4 Webcasts</title><link>http://blogs.msdn.com/dparys/archive/2009/11/04/visual-studio-2010-net-framework-4-webcasts.aspx</link><pubDate>Wed, 04 Nov 2009 13:53:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9917296</guid><dc:creator>dparys</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/dparys/comments/9917296.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dparys/commentrss.aspx?PostID=9917296</wfw:commentRss><wfw:comment>http://blogs.msdn.com/dparys/rsscomments.aspx?PostID=9917296</wfw:comment><description>Mit dem C# 4.0 Webcast wurde auf MSDN Deutschland die Serie rund um Visual Studio 2010 + .NET Framework 4 gestartet. Nun sind weitere Webcasts zum Thema erschienen: Visual Studio 2010 – Die Entwicklungsumgebung Managed Extensibility Framework – Eine Einführung...(&lt;a href="http://blogs.msdn.com/dparys/archive/2009/11/04/visual-studio-2010-net-framework-4-webcasts.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9917296" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dparys/archive/tags/Webcasts/default.aspx">Webcasts</category><category domain="http://blogs.msdn.com/dparys/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category></item><item><title>TechTalk Dezember 2009: Anwendungsentwicklung mit Visual Studio 2010</title><link>http://blogs.msdn.com/dparys/archive/2009/07/31/techtalk-dezember-2009-anwendungsentwicklung-mit-visual-studio-2010.aspx</link><pubDate>Fri, 31 Jul 2009 12:05:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9854259</guid><dc:creator>dparys</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/dparys/comments/9854259.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dparys/commentrss.aspx?PostID=9854259</wfw:commentRss><wfw:comment>http://blogs.msdn.com/dparys/rsscomments.aspx?PostID=9854259</wfw:comment><description>&lt;p&gt;Erst im Juni habe ich einen TechTalk hinter mir und schon steht mein nächster an. Dieses mal jedoch nicht über einen Monat gezogen sondern in einer Woche werden 5 Städte besucht und mein Kollege &lt;a href="http://blogs.msdn.com/cbinder"&gt;Christian Binder&lt;/a&gt; wird auch mit von der Partie sein.&lt;/p&gt;  &lt;p&gt;In Visual Studio 2010 kommen so viele neue Elemente dazu das wir einfach in &lt;a href="http://www.microsoft.com/germany/msdn/techtalk/aktuell/default.mspx"&gt;diesem TechTalk&lt;/a&gt; verschiedene Aspekte live im Coding demonstrieren wollen und auf hoffentlich viele Fragen eingehen dürfen. Ganz nach dem Motto: “Keine Slides! Nur Code!”&lt;/p&gt;  &lt;p&gt;Hier der Auszug von der MSDN TechTalk Anmeldeseite:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Der letzte MSDN TechTalk in diesem Jahr nimmt Sie mit auf eine Reise zur nächsten Version von Visual Studio: Visual Studio 2010. Dabei werden Christian Binder und Dariusz Parys die interessantesten Aspekte der neuen Entwicklungsumgebung vorstellen: von Verbesserungen in den einzelnen Frameworks bis hin zu neuen Möglichkeiten in den Application Lifecycle Management Tools, die das Testen und die Entwicklung im Team einfacher machen, wird dieser TechTalk die verschiedenen Aspekte mit Hilfe von Live Codings demonstrieren. Das heißt ganz klar: Keine Slides! Nur Code!&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;h4&gt;Die Termine:&lt;/h4&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032422667&amp;amp;Culture=de-DE"&gt;30.11. Karlsruhe&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032422668&amp;amp;Culture=de-DE"&gt;01.12. Köln&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032422669&amp;amp;Culture=de-DE"&gt;02.12. Hamburg&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032422671&amp;amp;Culture=de-DE"&gt;03.12. Berlin&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032422672&amp;amp;Culture=de-DE"&gt;04.12. München&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;An manchen Terminen werden wir vermutlich deutlich überziehen, das dürfte Karlsruhe, Berlin und München sein. In Köln und Hamburg sind wir leider an die Öffnungszeiten des Microsoft Office gebunden.&lt;/p&gt;  &lt;p&gt;Ich freue mich schon auf viele Teilnehmer und Fragen, bis dann!&lt;/p&gt;  &lt;p&gt;Link: &lt;a href="http://www.microsoft.com/germany/msdn/techtalk/aktuell/default.mspx"&gt;Offizielle TechTalk Anmeldeseite&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9854259" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dparys/archive/tags/Connected+Systems/default.aspx">Connected Systems</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/dparys/archive/tags/C_2B002B002F00_CLI/default.aspx">C++/CLI</category><category domain="http://blogs.msdn.com/dparys/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/dparys/archive/tags/WF/default.aspx">WF</category><category domain="http://blogs.msdn.com/dparys/archive/tags/VSTS_2F00_TFS/default.aspx">VSTS/TFS</category><category domain="http://blogs.msdn.com/dparys/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Coding4Fun/default.aspx">Coding4Fun</category><category domain="http://blogs.msdn.com/dparys/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/dparys/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/dparys/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Events/default.aspx">Events</category><category domain="http://blogs.msdn.com/dparys/archive/tags/TechTalk/default.aspx">TechTalk</category><category domain="http://blogs.msdn.com/dparys/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Testing/default.aspx">Testing</category><category domain="http://blogs.msdn.com/dparys/archive/tags/PLINQ/default.aspx">PLINQ</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Data+Access/default.aspx">Data Access</category><category domain="http://blogs.msdn.com/dparys/archive/tags/C_2B002B00_/default.aspx">C++</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Dynamic+Languages/default.aspx">Dynamic Languages</category><category domain="http://blogs.msdn.com/dparys/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Parallel+Computing/default.aspx">Parallel Computing</category><category domain="http://blogs.msdn.com/dparys/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Entity+Framework/default.aspx">Entity Framework</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Community/default.aspx">Community</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Coding/default.aspx">Coding</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category></item><item><title>Tech-Ed 2009 vom 09.11 – 13.11 in Berlin</title><link>http://blogs.msdn.com/dparys/archive/2009/06/22/tech-ed-2009-vom-09-11-13-11-in-berlin.aspx</link><pubDate>Mon, 22 Jun 2009 17:54:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9797738</guid><dc:creator>dparys</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/dparys/comments/9797738.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dparys/commentrss.aspx?PostID=9797738</wfw:commentRss><wfw:comment>http://blogs.msdn.com/dparys/rsscomments.aspx?PostID=9797738</wfw:comment><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/dparys/WindowsLiveWriter/TechEd2009vom09.1113.11inBerlin_EDB7/banner-home1_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="banner-home1" border="0" alt="banner-home1" src="http://blogs.msdn.com/blogfiles/dparys/WindowsLiveWriter/TechEd2009vom09.1113.11inBerlin_EDB7/banner-home1_thumb.jpg" width="729" height="221" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nach langer Pause dürfen wir die Tech-Ed endlich wieder in Deutschland begrüßen. Dieses Mal ist Berlin Gastgeber. Es werden zahlreiche neue Technologien vorgestellt und nach Jahrelanger Trennung von IT-Pros und Developern wieder ein einwöchiger Event für beide veranstaltet. Themen werden unter anderem Windows 7, Windows Server 2008 R2, Windows Azure und Visual Studio 2010 sein.&lt;/p&gt;  &lt;p&gt;Frühbucherrabatte gibt es auf der entsprechenden Webseite&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/europe/teched/" href="http://www.microsoft.com/europe/teched/"&gt;http://www.microsoft.com/europe/teched/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9797738" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dparys/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/dparys/archive/tags/WF/default.aspx">WF</category><category domain="http://blogs.msdn.com/dparys/archive/tags/VSTS_2F00_TFS/default.aspx">VSTS/TFS</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Dev+Tools/default.aspx">Dev Tools</category><category domain="http://blogs.msdn.com/dparys/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Conference/default.aspx">Conference</category><category domain="http://blogs.msdn.com/dparys/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Windows+Server/default.aspx">Windows Server</category><category domain="http://blogs.msdn.com/dparys/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Events/default.aspx">Events</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Windows+Live/default.aspx">Windows Live</category><category domain="http://blogs.msdn.com/dparys/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Testing/default.aspx">Testing</category><category domain="http://blogs.msdn.com/dparys/archive/tags/PLINQ/default.aspx">PLINQ</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Data+Access/default.aspx">Data Access</category><category domain="http://blogs.msdn.com/dparys/archive/tags/C_2B002B00_/default.aspx">C++</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Virtualization/default.aspx">Virtualization</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Dynamic+Languages/default.aspx">Dynamic Languages</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Parallel+Computing/default.aspx">Parallel Computing</category><category domain="http://blogs.msdn.com/dparys/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Entity+Framework/default.aspx">Entity Framework</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://blogs.msdn.com/dparys/archive/tags/.NET+Services/default.aspx">.NET Services</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Azure+Services/default.aspx">Azure Services</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Live+Services/default.aspx">Live Services</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Community/default.aspx">Community</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category></item><item><title>Was sind relevante Themen in der Softwareentwicklung für Sie?</title><link>http://blogs.msdn.com/dparys/archive/2008/12/03/was-sind-relevante-themen-in-der-softwareentwicklung-f-r-sie.aspx</link><pubDate>Wed, 03 Dec 2008 19:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9170644</guid><dc:creator>dparys</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/dparys/comments/9170644.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dparys/commentrss.aspx?PostID=9170644</wfw:commentRss><wfw:comment>http://blogs.msdn.com/dparys/rsscomments.aspx?PostID=9170644</wfw:comment><description>&lt;P&gt;Lange Zeit bevor ich bei Microsoft war, habe ich schon in diversen Firmen eigentlich immer aus eigenem Antrieb heraus recht schnell Technologie adaptiert und auch während laufender Projekte reingebracht. Den Mehraufwand hat man gerne selbst getragen (oder tragen lassen, Entschuldigung schon mal an dieser Stelle, Ihr wisst wer gemeint ist) um das Projekt / Produkt auf eine neue technische Ebene zu heben. Meist hat sich der Aufwand auch gelohnt.&lt;/P&gt;
&lt;P&gt;Seit ich bei Microsoft bin, liegt hier mein Fokus natürlich verstärkt auf die Microsoft Technologie. Ich möchte mal sagen das ich nicht diesen &lt;A href="http://ralfw.blogspot.com/2008/05/microsoftdmmerung.html" mce_href="http://ralfw.blogspot.com/2008/05/microsoftdmmerung.html"&gt;Bias&lt;/A&gt; habe über den Ralf Westphal geschrieben hat, aber mein "Abdriften" in andere Technologie Welten ist definitiv geringer geworden. &lt;/P&gt;
&lt;P&gt;Warum schreibe ich das eigentlich? Ganz einfach, nach dem Auswerten der Technical Summit Feedbacks ist mir aufgefallen das die Themen kaum Relevanz für die Teilnehmer hatten und ich nicht von mir ausgehen möchte was relevant ist. Was ich wirklich Cool finden würde, wären Kommentare was für &lt;STRONG&gt;&lt;EM&gt;Sie relevante Softwareentwicklungsthemen &lt;/EM&gt;&lt;/STRONG&gt;sind.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9170644" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dparys/archive/tags/XPSP2/default.aspx">XPSP2</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Connected+Systems/default.aspx">Connected Systems</category><category domain="http://blogs.msdn.com/dparys/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://blogs.msdn.com/dparys/archive/tags/CodeClips/default.aspx">CodeClips</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Software+Factories/default.aspx">Software Factories</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/dparys/archive/tags/VPC/default.aspx">VPC</category><category domain="http://blogs.msdn.com/dparys/archive/tags/C_2B002B002F00_CLI/default.aspx">C++/CLI</category><category domain="http://blogs.msdn.com/dparys/archive/tags/HPC/default.aspx">HPC</category><category domain="http://blogs.msdn.com/dparys/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/dparys/archive/tags/WF/default.aspx">WF</category><category domain="http://blogs.msdn.com/dparys/archive/tags/VSTS_2F00_TFS/default.aspx">VSTS/TFS</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Dev+Tools/default.aspx">Dev Tools</category><category domain="http://blogs.msdn.com/dparys/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/dparys/archive/tags/XNA/default.aspx">XNA</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Coding4Fun/default.aspx">Coding4Fun</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Dies+und+Das/default.aspx">Dies und Das</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Conference/default.aspx">Conference</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Web+2.0/default.aspx">Web 2.0</category><category domain="http://blogs.msdn.com/dparys/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Vista/default.aspx">Vista</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/dparys/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/dparys/archive/tags/MFC/default.aspx">MFC</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Windows+Server/default.aspx">Windows Server</category><category domain="http://blogs.msdn.com/dparys/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Open+XML/default.aspx">Open XML</category><category domain="http://blogs.msdn.com/dparys/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://blogs.msdn.com/dparys/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Events/default.aspx">Events</category><category domain="http://blogs.msdn.com/dparys/archive/tags/WDF/default.aspx">WDF</category><category domain="http://blogs.msdn.com/dparys/archive/tags/TechTalk/default.aspx">TechTalk</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Windows+Live/default.aspx">Windows Live</category><category domain="http://blogs.msdn.com/dparys/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Testing/default.aspx">Testing</category><category domain="http://blogs.msdn.com/dparys/archive/tags/PLINQ/default.aspx">PLINQ</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Data+Access/default.aspx">Data Access</category><category domain="http://blogs.msdn.com/dparys/archive/tags/C_2B002B00_/default.aspx">C++</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Games/default.aspx">Games</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Virtualization/default.aspx">Virtualization</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Dynamic+Languages/default.aspx">Dynamic Languages</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Windows/default.aspx">Windows</category><category domain="http://blogs.msdn.com/dparys/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Mein+Senf/default.aspx">Mein Senf</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Parallel+Computing/default.aspx">Parallel Computing</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Concurrency/default.aspx">Concurrency</category><category domain="http://blogs.msdn.com/dparys/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Entity+Framework/default.aspx">Entity Framework</category><category domain="http://blogs.msdn.com/dparys/archive/tags/PDC2008/default.aspx">PDC2008</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Model+Driven+Development/default.aspx">Model Driven Development</category><category domain="http://blogs.msdn.com/dparys/archive/tags/.NET+Services/default.aspx">.NET Services</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Azure+Services/default.aspx">Azure Services</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Live+Services/default.aspx">Live Services</category></item><item><title>MSDN Webcast: Unity – Dependency Injection</title><link>http://blogs.msdn.com/dparys/archive/2008/11/03/msdn-webcast-unity-dependency-injection.aspx</link><pubDate>Mon, 03 Nov 2008 18:19:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9033493</guid><dc:creator>dparys</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dparys/comments/9033493.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dparys/commentrss.aspx?PostID=9033493</wfw:commentRss><wfw:comment>http://blogs.msdn.com/dparys/rsscomments.aspx?PostID=9033493</wfw:comment><description>&lt;p&gt;Lange hat es gedauert, doch jetzt ist er scheinbar Live, der MSDN Webcast zum Dependency Injection Framework &lt;a href="http://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032392948"&gt;Unity&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Das ganze findet man wie immer mit Hilfe des MSDN &lt;a href="http://www.microsoft.com/germany/msdn/webcasts/finder/default.mspx"&gt;Webcast Finder-Tools&lt;/a&gt;, bzw. jetzt auch auf &lt;a href="http://channel9.msdn.com/germany"&gt;Channel 9 Deutschland&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9033493" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dparys/archive/tags/Webcasts/default.aspx">Webcasts</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/dparys/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/dparys/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/dparys/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Screencast/default.aspx">Screencast</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Architecture/default.aspx">Architecture</category></item><item><title>Zeit zum Besinnen</title><link>http://blogs.msdn.com/dparys/archive/2008/10/29/zeit-zum-besinnen.aspx</link><pubDate>Wed, 29 Oct 2008 09:57:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9021736</guid><dc:creator>dparys</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dparys/comments/9021736.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dparys/commentrss.aspx?PostID=9021736</wfw:commentRss><wfw:comment>http://blogs.msdn.com/dparys/rsscomments.aspx?PostID=9021736</wfw:comment><description>&lt;p&gt;Der 2. Tag der PDC 2008 hat es wirklich in sich gehabt. Zuerst eine Reihe von Technologien die vorgestellt worden sind und dann am Abend der Wahnsinn in den Universal Studios. Es ist kurz vor Halloween und das hat man bei der PDC Party deutlich gemerkt. Ich habe noch nie so viele Zombies, Verrückte und Irre mit Kettensägen rumlaufen sehen, dazu die schaurigen Schreie aus sämtlichen Lautsprechern bis hin zum künstlich erzeugten Nebel. Ich bin immer noch ganz baff. &lt;/p&gt;  &lt;p&gt;Jetzt sitze ich vor dem Rechner und versuche nochmal den heutigen Tag Revue passieren zu lassen. Es wurde viel Angekündigt. Windows 7, Visual Studio 2010, “Oslo” und Live Services als Bestandteil von Windows Azure. Es wurden auch einige Demos gezeigt, speziell zu Windows 7. Eine verbesserte Taskleiste, Multitouch Feature und einiges mehr. &lt;/p&gt;  &lt;p&gt;Ich selbst hatte meine eigenen Erwartungen an Windows 7. Ob die sich erfüllen wird sich erst zeigen, wenn ich mit dem Produkt arbeite. Ich selbst benötige kein neues UI und keinerlei zusätzliche Consumer Funktionalität. Ich möchte vielmehr, dass das System insgesamt an den Grundeigenschaften verbessert wird. Sprich: Performance, Speicherverbrauch, Kompatibilität. Ist das gegeben, dann freue ich mich gerne über jedes zusätzliche Feature für Entwickler. Mein Eindruck nach der heutigen Keynote ist, das sich gerade in diesem Bereich vieles tut. Wie gesagt, wir sind noch vor der Beta und ich hatte es auch noch nicht in den Händen, aber ein paar Aussagen aus Sinofski’s Mund geben mir einfach Grund zur Annahme das es so sein wird. &lt;/p&gt;  &lt;p&gt;Dann gibt es doch ein Feature bei Windows 7 das mich begeistert hat. Die Möglichkeit Windows 7 direkt von einer VHD Datei zu booten. Was hat man davon? Ganz einfach, man kann einen Markierungspunkt in Windows 7 setzen und jederzeit wieder zu diesem Punkt zurückkehren. Egal was man in der Zwischenzeit gemacht hat. Inwieweit man dies nun als Virtualisierung betrachten möchte, sei mal dahingestellt.&lt;/p&gt;  &lt;p&gt;Visual Studio 2010 ist nun als CTP verfügbar und enthält das .NET Framework 4.0 und neue Versionen von C# und VB. &lt;a href="weblogs.asp.net/scottgu"&gt;Scott Guthrie&lt;/a&gt; hat hier die Keynote gehalten. Was besonderes Interessant an Visual Studio 2010 sein wird, ist die Tatsache, das die komplette UI auf WPF basieren wird. Der momentane CTP enthält noch wenige dieser WPF Oberflächen. Auf der Keynote hat Scott eine Demo gezeigt, wie man sich in den Source-Editor von VS 2010 reinhängt um die Kommentare durch ein WPF Control schöner rendern zu lassen. Generell wird durch Hilfe des &lt;a href="http://code.msdn.microsoft.com/mef"&gt;Managed Extensibility Frameworks&lt;/a&gt; Entwicklern die Möglichkeit gegeben, sich beliebig in die IDE einzuhängen und diese zu erweitern. Man darf gespannt sein was da so alles an Erweiterungen kommen wird.&lt;/p&gt;  &lt;p&gt;Danach habe ich mich auf “Oslo” gefreut. Der Vortrag von Doug Purdy zum Thema hat mich ein wenig nachdenklich gestimmt. Nicht im negativen Sinne. Wenn ich Technologie vorgestellt bekommen, nehme ich diese erstmal auf und denke meist 2-3 Tage darüber nach. Ich diskutiere dann auch gerne darüber und dies werde ich speziell zu “Oslo” auf dem morgigen Ask-The-Experts besonders wahrnehmen. Für mich ist das immer Zeit Zum Besinnen. &lt;/p&gt;  &lt;p&gt;Es gibt noch eine Menge an Informationen zu den verschiedenen Themen von heute, die ich in den unterstehenden Links einfach querverweise.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/oslo/default.aspx"&gt;Oslo Developer Center&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/e7/"&gt;Engineering Windows 7&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=922B4655-93D0-4476-BDA4-94CF5F8D4814&amp;amp;displaylang=en"&gt;Visual Studio 2010 and .NET Framework 4.0 CTP&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.azure.com"&gt;Windows Azure&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9021736" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dparys/archive/tags/Connected+Systems/default.aspx">Connected Systems</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/dparys/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Conference/default.aspx">Conference</category><category domain="http://blogs.msdn.com/dparys/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/dparys/archive/tags/PDC2008/default.aspx">PDC2008</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Model+Driven+Development/default.aspx">Model Driven Development</category></item><item><title>Meine Sessions auf dem Technical Summit 2008</title><link>http://blogs.msdn.com/dparys/archive/2008/10/17/meine-sessions-auf-dem-technical-summit-2008.aspx</link><pubDate>Fri, 17 Oct 2008 17:32:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9003095</guid><dc:creator>dparys</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/dparys/comments/9003095.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dparys/commentrss.aspx?PostID=9003095</wfw:commentRss><wfw:comment>http://blogs.msdn.com/dparys/rsscomments.aspx?PostID=9003095</wfw:comment><description>&lt;p&gt;Nun sind meine Sessions Abstracts final für den &lt;a href="http://www.technical-summit.de/"&gt;Technical Summit 2008&lt;/a&gt; gepostet und auf der Webseite zu begutachten. Folgende Vorträge werde ich halten:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;Cloud Services - Architektur und Implementierung&lt;/b&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Software + Services basierte Softwarearchitekturen benötigen entsprechend Bausteine die einfach und effektiv wiederzuverwenden sind. Sehen Sie in dieser Session was Microsoft für Bausteine (&amp;quot;Building Block Services&amp;quot;) dem Entwickler und Architekten anbietet. Sehen Sie die Möglichkeiten der Messaging-, Workflow-, Identity- und Dataservices, welche Vorteile Sie Ihnen bringen und wie man diese in eigene Anwendungen integriert. Diese Session wird anhand von Beispielen zeigen wie im einzelnen diese Dienste genutzt werden können und auch am Beispiel eines Kunden-Projekts zeigen das man heute schon Software damit erweitern kann.&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Oslo - Software Modellierung von Anfang an&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;&amp;quot;Oslo&amp;quot; ist ein Verbund von Technologien der Softwareentwicklern und -Architekten die Möglichkeit gibt durchgängige Softwaremodellierung zu erreichen. Neben einer neuen Sprache die mit &amp;quot;Oslo&amp;quot; erscheinen wird, hält auch ein Repository Einzug das Software- und Betriebliche Modelle beherbergt und von überall in der Infrastruktur erreichbar macht. Sehen Sie in dieser Session welche Bestandteile &amp;quot;Oslo&amp;quot; mit sich bringt, wie die neue Sprache für &amp;quot;Oslo&amp;quot; aussieht, welche Modelle man in den ersten Versionen unterstützt und wie man eigene Modelle einbinden kann.&lt;/p&gt;    &lt;p&gt;&lt;a name="AdvancedWorkflow"&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;Windows Communication Foundation und Workflow Foundation        &lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;in .NET 4.0&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;In der nächsten Version des .NET Frameworks werden sich WCF und WF noch näher kommen als bisher. Sehen Sie in dieser Session einen Deep Dive in die neue Funktionalität und sehen Sie anhand von Szenarien was Ihnen diese Neuerungen an Vorteile bringen.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Vielleicht sieht man sich ja in Berlin.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9003095" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dparys/archive/tags/Connected+Systems/default.aspx">Connected Systems</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/dparys/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/dparys/archive/tags/WF/default.aspx">WF</category><category domain="http://blogs.msdn.com/dparys/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Conference/default.aspx">Conference</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Events/default.aspx">Events</category><category domain="http://blogs.msdn.com/dparys/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Architecture/default.aspx">Architecture</category></item><item><title>Service Operations und mehr mit ADO.NET Data Services</title><link>http://blogs.msdn.com/dparys/archive/2008/10/17/service-operations-und-mehr-mit-ado-net-data-services.aspx</link><pubDate>Fri, 17 Oct 2008 11:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9002755</guid><dc:creator>dparys</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/dparys/comments/9002755.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dparys/commentrss.aspx?PostID=9002755</wfw:commentRss><wfw:comment>http://blogs.msdn.com/dparys/rsscomments.aspx?PostID=9002755</wfw:comment><description>&lt;p&gt;Wer Dokumentation liest ist klar im Vorteil. Ich gebe zu, ich schaue mir eine API an und versuche Intuitiv mit dieser zu arbeiten. Doch manchmal gibt es einfach die Notwendigkeit die Dokumentation zu lesen. &lt;/p&gt;  &lt;p&gt;Was ist mein Problem? Ich habe ein Entity Framework Modell das Kategorien und Produkte enthält. Beide Entities sind mit Datenbankgenerierten IDs ausgestattet. Die Entitäten werden von einem Repository gekapselt und das Repository implementiert auch noch zusätzliche Funktionalität.&lt;/p&gt;  &lt;div&gt;   &lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;     &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;interface&lt;/span&gt; ICatalogServiceRepository&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;     IQueryable&amp;lt;Categories&amp;gt; GetCategories();&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;     IQueryable&amp;lt;Products&amp;gt; GetProductsByCategory( Categories category );&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;     IQueryable&amp;lt;Categories&amp;gt; GetCategoriesWithProducts();&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;     Guid GetExternalProductReference(Products product);&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;     IQueryable&amp;lt;Guid&amp;gt; GetExternalProductReferencesByProducts(&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;                             IQueryable&amp;lt;Products&amp;gt; products);&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Dies ist die Schnittstelle um auf die Entitäten zuzugreifen. Rein lesend. Die Deklarationen in Zeile 6 und Zeile 7 unterstützen das Mapping von Produkt-Entitäten auf Systeme ausserhalb unseres Modell. Hier wird bei Bedarf eine &lt;em&gt;Guid&lt;/em&gt; erstellt, wenn eine externe Referenz zu einem Objekt angefordert wird.&lt;/p&gt;

&lt;p&gt;Das Repository soll in verschiedenen Umgebungen zum Einsatz kommen, unter anderem auch in einem ADO.NET Data Service. Leider kann ich dort folgendes &lt;u&gt;&lt;strong&gt;nicht&lt;/strong&gt;&lt;/u&gt; deklarieren:&lt;/p&gt;

&lt;div&gt;
  &lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;
    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; InitializeService( IDataServiceConfiguration config )&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;     &lt;span style="color: #008000"&gt;// Wenn ich keine Entitäten im Zugriff erlaube, kann ich diese auch&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;     &lt;span style="color: #008000"&gt;// nicht in Service Operationen einsetzen&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;     config.SetEntitySetAccessRule( &lt;span style="color: #006080"&gt;&amp;quot;*&amp;quot;&lt;/span&gt;, EntitySetRights.None );&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;     config.SetServiceOperationAccessRule( &lt;span style="color: #006080"&gt;&amp;quot;GetCategories&amp;quot;&lt;/span&gt;, &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;         ServiceOperationRights.AllRead );&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;     &lt;span style="color: #008000"&gt;// Diese Service Operation ist ungültig ==&amp;gt; Parameter != Primitive Type&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;     config.SetServiceOperationAccessRule( &lt;span style="color: #006080"&gt;&amp;quot;GetProductsByCategory&amp;quot;&lt;/span&gt;, &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;         ServiceOperationRights.AllRead );&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;     config.SetServiceOperationAccessRule( &lt;span style="color: #006080"&gt;&amp;quot;GetCategoriesWithProducts&amp;quot;&lt;/span&gt;, &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;         ServiceOperationRights.AllRead );&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt;     &lt;span style="color: #008000"&gt;// Diese Service Operation ist ungültig ==&amp;gt; Parameter != Primitive Type&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  15:&lt;/span&gt;     config.SetServiceOperationAccessRule( &lt;span style="color: #006080"&gt;&amp;quot;GetExternalProductReference&amp;quot;&lt;/span&gt;, &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  16:&lt;/span&gt;         ServiceOperationRights.AllRead );&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  17:&lt;/span&gt;     &lt;span style="color: #008000"&gt;// Diese Service Operation ist ungültig ==&amp;gt; Parameter != Primitive Type&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  18:&lt;/span&gt;     config.SetServiceOperationAccessRule( &lt;span style="color: #006080"&gt;&amp;quot;GetExternalProductReferencesByProducts&amp;quot;&lt;/span&gt;, &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  19:&lt;/span&gt;         ServiceOperationRights.AllRead );&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  20:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Ein Blick in die Dokumentation sagt folgendes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;em&gt;The method must accept only &lt;tt&gt;[in]&lt;/tt&gt; parameters.&lt;/em&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;&lt;em&gt;If parameters are defined, the type of each parameter must be a primitive type.&lt;/em&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  &lt;li&gt;
    &lt;p&gt;&lt;em&gt;The method must return void, &lt;b&gt;IEnumerable&amp;lt;T&amp;gt;&lt;/b&gt;, &lt;b&gt;IQueryable&amp;lt;T&amp;gt;&lt;/b&gt;, &lt;b&gt;T&lt;/b&gt;, or a primitive class such as integer or string.&lt;/em&gt;&lt;/p&gt;
  &lt;/li&gt;

  &lt;ul&gt;
    &lt;li&gt;
      &lt;p&gt;&lt;em&gt;&lt;b&gt;T&lt;/b&gt; MUST be a class that represents an entity type in the data model being exposed by the data service.&lt;/em&gt;&lt;/p&gt;
    &lt;/li&gt;

    &lt;li&gt;
      &lt;p&gt;&lt;em&gt;In order to support query options such as sorting, paging, and filtering, service operation methods should return &lt;b&gt;IQueryable&amp;lt;T&amp;gt;&lt;/b&gt;.&lt;/em&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ul&gt;

  &lt;li&gt;
    &lt;p&gt;&lt;em&gt;…&lt;/em&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Den Rest habe ich mal weggelassen. Die Konsequenz ist das beim Starten der Service einen Request Fehler bringt und man in die Logs schauen soll. &lt;/p&gt;

&lt;p&gt;Ich möchte nun nicht mein Entity Modell entsprechend dem ADO.NET Data Service anpassen, noch möchte ich mein Repository so auslegen das es für einen ADO.NET Data Service passt. Ich werde nicht herum kommen einen Adapter zu schreiben, der entsprechend die Regeln für den ADO.NET Data Service sicherstellt und mein Repository nutzen kann.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9002755" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dparys/archive/tags/Connected+Systems/default.aspx">Connected Systems</category><category domain="http://blogs.msdn.com/dparys/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/dparys/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Data+Access/default.aspx">Data Access</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Entity+Framework/default.aspx">Entity Framework</category></item><item><title>Dynamische Abfragen mit LINQ</title><link>http://blogs.msdn.com/dparys/archive/2008/10/14/dynamische-abfragen-mit-linq.aspx</link><pubDate>Tue, 14 Oct 2008 09:07:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8999091</guid><dc:creator>dparys</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/dparys/comments/8999091.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dparys/commentrss.aspx?PostID=8999091</wfw:commentRss><wfw:comment>http://blogs.msdn.com/dparys/rsscomments.aspx?PostID=8999091</wfw:comment><description>&lt;p&gt;In den letzten Tagen habe ich öfters über das Thema ADO.NET Entity Framework gesprochen. Eine der häufigsten Fragen war: “Wie kann ich Daten dynamisch abfragen?”. Es gibt verschiedene Möglichkeiten das zu Bewerkstelligen, heute möchte ich eine generische Aufzeigen: Composable Queries.&lt;/p&gt;  &lt;p&gt;LINQ Abfragen gegen Datenbanken liefern in der Regel ein spezialisiertes Query Object zurück, bei LINQ to Entities (ADO.NET Entity Framework) wäre das die Klasse &lt;em&gt;ObjectQuery&amp;lt;T&amp;gt;. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Die Abfrage&lt;/p&gt;  &lt;div&gt;   &lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;     &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; var query = from c &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; context.Customers&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt;             select c;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;liefert somit als Resultat das Objekt &lt;em&gt;ObjectQuery&amp;lt;Customers&amp;gt;&lt;/em&gt; zurück (&lt;em&gt;Anm.: Wenn es sich um ein Default Mapping der Northwind Datenbank handelt&lt;/em&gt;). Schaut man sich die Schnittstellen an, die &lt;em&gt;ObjectQuery&amp;lt;T&amp;gt;&lt;/em&gt; implementiert, entdeckt man die Schnittstellen &lt;em&gt;IQueryable&lt;/em&gt; und &lt;em&gt;IQueryable&amp;lt;T&amp;gt;&lt;/em&gt;. Die Grundlage um Abfragen miteinander flexibel zu kombinieren.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/dparys/WindowsLiveWriter/DynamischeAbfragenmitLINQ_71FB/shot1_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="shot1" border="0" alt="shot1" src="http://blogs.msdn.com/blogfiles/dparys/WindowsLiveWriter/DynamischeAbfragenmitLINQ_71FB/shot1_thumb_1.png" width="348" height="278" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Die obige Abfage ist definiert aber nicht ausgeführt. Der entsprechend visualisierte T-SQL Code des Providers sieht bisher wie folgt aus:&lt;/p&gt;

&lt;div&gt;
  &lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;
    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; [Extent1].[CustomerID] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [CustomerID],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; [Extent1].[CompanyName] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [CompanyName],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt; [Extent1].[ContactName] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [ContactName],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt; [Extent1].[ContactTitle] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [ContactTitle],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt; [Extent1].[Address] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [Address],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt; [Extent1].[City] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [City],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt; [Extent1].[Region] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [Region],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt; [Extent1].[PostalCode] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [PostalCode],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt; [Extent1].[Country] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [Country],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt; [Extent1].[Phone] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [Phone],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt; [Extent1].[Fax] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [Fax],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt; [Extent1].[Comments] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [Comments]&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; [dbo].[Customers] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [Extent1]&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Anm.: Den T-SQL Code kann man sich über eine ToTraceString() Methode von ObjectQuery anzeigen lassen.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Die Abfrage lässt sich noch erweitern, zum Beispiel möchte ich nur alle Kunden aus Deutschland angezeigt bekommen.&lt;/p&gt;

&lt;div&gt;
  &lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;
    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; var query2 = query.Where( customer =&amp;gt; customer.Country == &lt;span style="color: #006080"&gt;&amp;quot;Germany&amp;quot;&lt;/span&gt; );&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Damit wird die bestehende Abfrage um die Where Bedingung ergänzt und der T-SQL Code enthält die entsprechende Bedingung:&lt;/p&gt;

&lt;div&gt;
  &lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;
    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; [Extent1].[CustomerID] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [CustomerID],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; [Extent1].[CompanyName] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [CompanyName],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt; [Extent1].[ContactName] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [ContactName],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt; [Extent1].[ContactTitle] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [ContactTitle],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt; [Extent1].[Address] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [Address],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt; [Extent1].[City] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [City],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt; [Extent1].[Region] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [Region],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt; [Extent1].[PostalCode] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [PostalCode],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt; [Extent1].[Country] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [Country],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt; [Extent1].[Phone] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [Phone],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt; [Extent1].[Fax] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [Fax],&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt; [Extent1].[Comments] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [Comments]&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; [dbo].[Customers] &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; [Extent1]&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  15:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;WHERE&lt;/span&gt; N&lt;span style="color: #006080"&gt;'Germany'&lt;/span&gt; = [Extent1].[Country]&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Und so lässt sich das ganze fortsetzen. &lt;/p&gt;

&lt;p&gt;Damit lassen sich dynamische Abfragefilter in einer Anwendung erstellen, die dem Benutzer die Möglichkeit geben, Spalten auszuwählen, Bedingungen anzugeben und Sortierungskriterien zu bestimmen. In einer kleinen Beispielanwendung hat der Benutzer die Möglichkeit die Kunden Tabelle der Northwind Datenbank entsprechend einzuschränken. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/dparys/WindowsLiveWriter/DynamischeAbfragenmitLINQ_71FB/shot2_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="shot2" border="0" alt="shot2" src="http://blogs.msdn.com/blogfiles/dparys/WindowsLiveWriter/DynamischeAbfragenmitLINQ_71FB/shot2_thumb.png" width="358" height="203" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Der Benutzer kann die Anzahl der Spalten minimieren, einen Filter auf das anzuzeigende Land zu setzen und auch eine Sortierung wählen. &lt;/p&gt;

&lt;p&gt;Selektiert man keinen Filter wird die Abfrage entsprechend 1:1 im GridView angezeigt.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/dparys/WindowsLiveWriter/DynamischeAbfragenmitLINQ_71FB/shot3_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="shot3" border="0" alt="shot3" src="http://blogs.msdn.com/blogfiles/dparys/WindowsLiveWriter/DynamischeAbfragenmitLINQ_71FB/shot3_thumb.png" width="538" height="148" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Eine Auswahl einiger Filterkriterien erzeugt ein anderes Ergebnis:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/dparys/WindowsLiveWriter/DynamischeAbfragenmitLINQ_71FB/shot4_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="shot4" border="0" alt="shot4" src="http://blogs.msdn.com/blogfiles/dparys/WindowsLiveWriter/DynamischeAbfragenmitLINQ_71FB/shot4_thumb.png" width="348" height="413" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Im Anwendungscode wird die gleiche Query als Grundlage genommen. Diese wird in der Methode &lt;em&gt;ConstructBaseQuery&lt;/em&gt; erzeugt. Annhand der Selektion der Kriterien wird diese Abfrage im Code modifiziert. Hier der entsprechende Sourcecode:&lt;/p&gt;

&lt;div&gt;
  &lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;
    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; OnActionSubmitQuery( &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e )&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; ( NorthwindEntities context = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; NorthwindEntities() )&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;         var query = ConstructBaseQuery( context );&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ( inputUseCountry.Checked == &lt;span style="color: #0000ff"&gt;true&lt;/span&gt; )&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;             query = ConstructQueryByCountry( query );&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt;         }&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ( inputOrderByCity.Checked == &lt;span style="color: #0000ff"&gt;true&lt;/span&gt; )&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  11:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  12:&lt;/span&gt;             query = ConstructQueryOrderByCity( query );&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  13:&lt;/span&gt;         }&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  14:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ( inputOrderByCountry.Checked == &lt;span style="color: #0000ff"&gt;true&lt;/span&gt; )&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  15:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  16:&lt;/span&gt;             query = ConstructQueryOrderByCountry( query );&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  17:&lt;/span&gt;         }&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  18:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ( inputUseFewerColumns.Checked == &lt;span style="color: #0000ff"&gt;true&lt;/span&gt; )&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  19:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  20:&lt;/span&gt;             var q2 = ConstructQueryWithFewerColumns( query );&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  21:&lt;/span&gt;             outputResult.DataSource = q2;&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  22:&lt;/span&gt;             outputResult.DataBind();&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  23:&lt;/span&gt;         }&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  24:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  25:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  26:&lt;/span&gt;             outputResult.DataSource = query;&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  27:&lt;/span&gt;             outputResult.DataBind();&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  28:&lt;/span&gt;         }&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  29:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  30:&lt;/span&gt; }&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  31:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  32:&lt;/span&gt; IQueryable&amp;lt;Customers&amp;gt; ConstructBaseQuery( NorthwindEntities context )&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  33:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  34:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; context.Customers;&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  35:&lt;/span&gt; }&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  36:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  37:&lt;/span&gt; IQueryable&amp;lt;Customers&amp;gt; ConstructQueryByCountry( IQueryable&amp;lt;Customers&amp;gt; query )&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  38:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  39:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; query.Where( customer =&amp;gt; customer.Country == listOfCountries.SelectedValue );&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  40:&lt;/span&gt; }&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  41:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  42:&lt;/span&gt; IQueryable&amp;lt;Customers&amp;gt; ConstructQueryOrderByCity( IQueryable&amp;lt;Customers&amp;gt; query )&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  43:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  44:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; query.OrderBy( customer =&amp;gt; customer.City );&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  45:&lt;/span&gt; }&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  46:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  47:&lt;/span&gt; IQueryable&amp;lt;Customers&amp;gt; ConstructQueryOrderByCountry( IQueryable&amp;lt;Customers&amp;gt; query )&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  48:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  49:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; query.OrderBy( customer =&amp;gt; customer.Country );&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  50:&lt;/span&gt; }&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  51:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  52:&lt;/span&gt; IQueryable ConstructQueryWithFewerColumns(IQueryable&amp;lt;Customers&amp;gt; query)&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  53:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  54:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; query.Select( &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  55:&lt;/span&gt;         customer =&amp;gt; &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  56:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; { customer.CompanyName, customer.City, customer.Country } );&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  57:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Für die Projektion des Anonymen Typen (Zeile 52-57) musste ich allerdings ein einfaches &lt;em&gt;IQueryable&lt;/em&gt; zurückliefern, deshalb die Variable &lt;em&gt;q2 &lt;/em&gt;(Zeile 20).&lt;/p&gt;

&lt;p&gt;Dies ist eine Möglichkeit dynamische Abfragen mit LINQ zu erstellen und hat den Charme das dies mit jedem &lt;em&gt;IQueryable&lt;/em&gt; / &lt;em&gt;IQueryable&amp;lt;T&amp;gt;&lt;/em&gt; funktioniert und somit bei LINQ to SQL wie auch bei LINQ to Entities und LINQ to “was weiß ich was für ein Provider eingesetzt wird” funktioniert.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8999091" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dparys/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/dparys/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Data+Access/default.aspx">Data Access</category><category domain="http://blogs.msdn.com/dparys/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>Neues Futter f&amp;amp;#252;r unseren Applikationsserver</title><link>http://blogs.msdn.com/dparys/archive/2008/10/06/neues-futter-f-r-unseren-applikationsserver.aspx</link><pubDate>Mon, 06 Oct 2008 16:25:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8977824</guid><dc:creator>dparys</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dparys/comments/8977824.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dparys/commentrss.aspx?PostID=8977824</wfw:commentRss><wfw:comment>http://blogs.msdn.com/dparys/rsscomments.aspx?PostID=8977824</wfw:comment><description>&lt;p&gt;Das Windows Server Betriebssystem ist seit der Version Windows NT 4.0 mit Option Pack 3 ein Applikationsserver der verschiedene Funktionalitäten zur Verfügung stellt. Sei es Message Queuing, Object Pooling oder einfach nur verteilte Transaktionen. In der jetzigen Version Windows Server 2008 und dem .NET Framework 3.5 Service Pack 1 gibt es eine Reihe von Technologien die ein Entwickler nutzen kann um verteilte Anwendungsarchitekturen zu entwickeln und zu betreiben. &lt;/p&gt;  &lt;p&gt;Mit der Software Modellierung die im Rahmen der Einführung von “Oslo” einen großen Einzug in die Entwicklerlandschaft halten wird, erhält auch das Windows Betriebssystem weitere Verbesserungen und Neuerungen im Bereich “Application Server”. Neben der Windows Communication Foundation 4.0 und der Windows Workflow Foundation 4.0 kommt ein neuer Anwendungshostprozess ins Spiel der auf der Basis vom Internet Information Server 7 eine Reihe von Funktionalitäten mit sich bringt um Anwendungen skalierbar, performant und wartbar zu betreiben. Diese Technologie nennt sich momentan “Dublin” und wird das erste Produkt sein das “Oslo” direkt unterstützt. Mehr Informationen findet man entsprechend auf der Webseite &lt;a href="http://www.microsoft.com/net/dublin.aspx"&gt;Windows Server Application Server Roadmap&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8977824" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dparys/archive/tags/Connected+Systems/default.aspx">Connected Systems</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Windows+Server/default.aspx">Windows Server</category><category domain="http://blogs.msdn.com/dparys/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Architecture/default.aspx">Architecture</category></item><item><title>Visual Studio 2010 und die Modellierung</title><link>http://blogs.msdn.com/dparys/archive/2008/09/30/visual-studio-2010-und-die-modellierung.aspx</link><pubDate>Tue, 30 Sep 2008 16:51:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8970284</guid><dc:creator>dparys</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dparys/comments/8970284.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dparys/commentrss.aspx?PostID=8970284</wfw:commentRss><wfw:comment>http://blogs.msdn.com/dparys/rsscomments.aspx?PostID=8970284</wfw:comment><description>&lt;p&gt;Seit kurzem ist ein Pressebericht auf der Microsoft Corporation Webseite publiziert der Visual Studio 2010 und das .NET Framework 4.0 ankündigt. Eine der wichtigen Features ist die Modellierung von Anwendungen. Jahrelang haben wir den Fokus auf &lt;a href="http://msdn.microsoft.com/en-us/vsx/default.aspx"&gt;Domain Specific Languages&lt;/a&gt; gelegt, doch der Markt möchte mehr. Nun wird in der Version 2010 auch die Möglichkeit bestehen mit der &lt;a href="http://en.wikipedia.org/wiki/Unified_Modeling_Language"&gt;Unified Modeling Language&lt;/a&gt; (kurz UML) zu arbeiten. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/presspass/press/2008/sep08/09-29VS10PR.mspx"&gt;Pressennachricht zu Visual Studio 2010 und .NET Framework 4.0&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/vstudio/products/cc948977.aspx"&gt;MSDN Webseite zu Visual Studio 2010&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8970284" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dparys/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/dparys/archive/tags/.NET+Framework/default.aspx">.NET Framework</category></item><item><title>Ich, über die Xtopia und den Technical Summit</title><link>http://blogs.msdn.com/dparys/archive/2008/09/30/ich-ber-die-xtopia-und-den-technical-summit.aspx</link><pubDate>Tue, 30 Sep 2008 14:20:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8970148</guid><dc:creator>dparys</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dparys/comments/8970148.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dparys/commentrss.aspx?PostID=8970148</wfw:commentRss><wfw:comment>http://blogs.msdn.com/dparys/rsscomments.aspx?PostID=8970148</wfw:comment><description>&lt;p&gt;Nachdem mein Kollege &lt;a href="http://blogs.msdn.com/olivers/default.aspx"&gt;Oliver Scheer&lt;/a&gt;, schon eine Reihe anderer Kollegen zur Xtopia und dem Technical Summit befragt hat, habe ich meine Video Kamera genommen und auch meinen Senf abgegeben.&lt;/p&gt; &lt;iframe height="325" src="http://channel9.msdn.com/posts/Dariusz/430416/player/" frameborder="0" width="320" scrolling="no"&gt;&lt;/iframe&gt;  &lt;br /&gt;&lt;a href="http://channel9.msdn.com/posts/Dariusz/Xtopia--Technical-Summit-Dariusz-Parys/"&gt;Xtopia + Technical Summit: Dariusz Parys&lt;/a&gt;  &lt;br /&gt;  &lt;p&gt;Weitere Interviews meiner Kollegen findet man &lt;a href="http://channel9.msdn.com/tags/Xtopia/"&gt;hier auf Channel9&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8970148" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dparys/archive/tags/Connected+Systems/default.aspx">Connected Systems</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/dparys/archive/tags/C_2B002B002F00_CLI/default.aspx">C++/CLI</category><category domain="http://blogs.msdn.com/dparys/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/dparys/archive/tags/WF/default.aspx">WF</category><category domain="http://blogs.msdn.com/dparys/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Conference/default.aspx">Conference</category><category domain="http://blogs.msdn.com/dparys/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.msdn.com/dparys/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Events/default.aspx">Events</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Windows+Live/default.aspx">Windows Live</category><category domain="http://blogs.msdn.com/dparys/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Data+Access/default.aspx">Data Access</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Dynamic+Languages/default.aspx">Dynamic Languages</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Mein+Senf/default.aspx">Mein Senf</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Parallel+Computing/default.aspx">Parallel Computing</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Concurrency/default.aspx">Concurrency</category></item><item><title>Velocity – Eine Einführung</title><link>http://blogs.msdn.com/dparys/archive/2008/09/26/velocity-eine-einf-hrung.aspx</link><pubDate>Fri, 26 Sep 2008 09:26:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8966027</guid><dc:creator>dparys</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/dparys/comments/8966027.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dparys/commentrss.aspx?PostID=8966027</wfw:commentRss><wfw:comment>http://blogs.msdn.com/dparys/rsscomments.aspx?PostID=8966027</wfw:comment><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Velociwas? Codenamen sind bei Microsoft, seit ich diese Firma kenne, Bestandteil der Firmenkultur und werden vermutlich so schnell nicht verschwinden. Mittlerweile würde ich mir wünschen von den Codenamen wegzukommen. Es verwirrt mich einfach schon selbst bei der Fülle von Technologien die wir erstellen, den Codenamen jeweils der richtigen zuzuordnen. &lt;/p&gt;  &lt;p&gt;Velocity ist ein “Distributed Cache”. Oder auf Deutsch: Velocity ist ein “Verteilter Zwischenspeicher”. Ein Zwischenspeicher der logisch mehrere physikalische Maschinen zu einem einheitlichen Cache verschmelzen lässt. Die Velocity Infrastruktur sorgt hierbei das die Daten im Verbund für alle verfügbar sind und bei Bedarf auch noch repliziert werden.&lt;/p&gt;  &lt;p&gt;Wann setzt man Caching ein, wann macht es Sinn Daten nicht direkt aus der eigentlichen Datenquelle zu lesen und dementsprechend vorzuhalten?&lt;/p&gt;  &lt;p&gt;Wir benutzen in der Anwendung von Technologien öfters Cache-Systeme und Mechanismen als uns bewußt ist. Dies passiert meist implizit, ohne das wir davon viel mitbekommen. Ein Beispiel ist das Dateisystem. Das Dateisystem speichert die Zugriffe in einen Zwischenspeicher und ermöglicht so eine bessere Performance beim lesen und auch schreiben der Daten. Der Durchsatz wird erhöht und Fesplatten profitieren von dem Lese/Schreibcache.&lt;/p&gt;  &lt;p&gt;Wenn man Caching in seine eigene Anwendung einbauen möchte, so möchte man in der Regel die Performance steigern. Das ist oft dann notwendig wenn die Architektur der Anwendung Mehrschichtig ist und die Schichten auch physikalisch in unterschiedlichen Prozessen (oder auch Maschinen) liegen. Nur dann? Nein, das kann ebenfalls Sinn machen wenn es sich um eine Anwendung handelt die Intensive Operationen auf eine Datenquelle (nicht zwangsläufig eine Datenbank) durchführt und diese Operation jedesmal zusätzlich Zeit kostet. Hier bietet es sich auch an die Daten aus der Quelle im Speicher der Anwendung vorzuhalten.&lt;/p&gt;  &lt;p&gt;Vielleicht benutzt der ein oder andere für bestimmte Daten schon ein disconnected DataSet in welchem Lookup Daten im Prozess gehalten werden. Das ist im Prinzip auch ein Cache. Allerdings keiner der sich mit anderen Zwischenspeichern synchronisieren kann. Ich habe Lookup Daten erwähnt. Ein Cache ist also nicht für jede Art von Daten Sinnvoll. Welche machen denn Sinn?&lt;/p&gt;  &lt;h5&gt;Referenz Daten&lt;/h5&gt;  &lt;p&gt;Bleiben wir doch bei den Lookup Daten. Es sind sogenannte Referenz-Daten. Referenz-Daten sind z.B. Katalog-Daten, Daten von Mitarbeitern, Daten die sich nicht oft ändern, bzw. deren Änderung periodisch geschieht. Diese Daten sind eindeutig versioniert. Auf diese Daten wird auch in der Regel nur lesend zugegriffen und meist werden diese Referenzen nur an Aktivitäten in der Anwendung mitgegeben um sich darauf zu beziehen. &lt;/p&gt;  &lt;h5&gt;Aktivitäts Orientierte Daten&lt;/h5&gt;  &lt;p&gt;Es gibt aber auch Daten die während der Benutzung der Anwendung erzeugt werden. Zum Beispiel das Erstellen eines Warenkorbes. Diese Daten sind exklusiv für den jeweiligen Benutzer und werden auch schreibend verändert und sollten dementsprechend auch in einer Transaktion manipuliert werden können. &lt;/p&gt;  &lt;h5&gt;Resource Orientierte Daten&lt;/h5&gt;  &lt;p&gt;Bei bestimmten Anwendungen werden eine gewisse Anzahl von Resourcen im System vorhanden sein, die es dann abzuarbeiten gilt. Eine Resource könnte zum Beispiel bei einem Flugbuchungssystem der Sitzplatz in einer speziellen Maschine sein. Hier ist der Umgang meist lesend und wenn geschrieben wird, weil der Sitz gebucht wird, so passiert das im Wissen das konkurrierende Zugriffe erfolgen können. Eine Resource ist meist Bestandteil mehrerer Transaktionen. Hier gibt es zusätzlich die Problematik ob ich diese exklusiv beim Bearbeiten sperren möchte oder das System im Falle der Flugbuchung Überbuchungen zulässt, also mehr eine relaxte Art mit der Resource umzugehen.&lt;/p&gt;  &lt;p&gt;Diese drei Arten von Daten unterstützt Velocity. Was ist nun das besondere an einem verteilten Zwischenspeicher? Skalierbarkeit und Verfügbarkeit der Daten. Auf Server-Farmen ist der Einsatz von Caching nicht trivial. Was passiert bei Aktualisierungen von Referenzdaten, was passiert wenn ich auf Server A einen Warenkorb angelegt habe und ich auf Server C beim nächsten Request mir diesen anzeigen lassen möchte? Ein Roundtrip zur Datenbank nur um die Daten zwischen zu speichern? Genau in diesen Bereich kann Velocity helfen, um die Zugriffs-Last an den Daten-Backend zu verringern. &lt;/p&gt;  &lt;p&gt;Velocity vereint mehrere physikalische Maschinen zu einem logischen Cache den ich in diesem Verbund einheitlich ansprechen kann. Hier gibt es drei Begriffe die es zu verstehen gilt. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/dparys/WindowsLiveWriter/VelocityEineEinfhrung_5AB8/shot1_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" title="shot1" border="0" alt="shot1" src="http://blogs.msdn.com/blogfiles/dparys/WindowsLiveWriter/VelocityEineEinfhrung_5AB8/shot1_thumb.png" width="526" height="331" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h5&gt;Named Cache&lt;/h5&gt;  &lt;p&gt;Durch die Zuweisung einer logischen Einheit enthält man einen Named Cache der über die gewünschte Anzahl von Maschinen einheitlich ist und nur über den Namen (deshalb Named Cache) angesprochen wird. Lege ich ein Objekt in den Cache, so weiß ich nicht wo dieses Objekt physikalisch landet, sondern ich übergebe es einfach dem Cache und Velocity macht den Rest. Der Named Cache kann auch noch über die Konfiguration einer Policy im Verhalten angepasst werden.&lt;/p&gt;  &lt;h5&gt;Region&lt;/h5&gt;  &lt;p&gt;Eine Region ist physikalisch einer Maschine zugeordnet. Regionen werden implizit angelegt durch Velocity, ich kann diese auch explizit anlegen. Objekte können Regionen zugewiesen werden um so auch komplette Graphen in eine physikalische Region zu packen. Velocity kann auch Daten aus einer Region auf andere Maschinen duplizieren und in sogenannten “Secondary Regions” aufbewahren, für den Fall das eine Maschine wegbricht.&lt;/p&gt;  &lt;h5&gt;Cache Item&lt;/h5&gt;  &lt;p&gt;Zu guter letzt gibt es noch das Cache Item. Das Cache Item enthält den eigentlichen Inhalt den man Speichern möchte, zusätzlich attributiert mit einem eindeutigen Key, wenn man möchte auch noch Tags und Angaben wie lange zum Beispiel das Item im Cache leben darf. Dies kann im übrigen unabhängig von der Definition des Named Cache sein.&lt;/p&gt;  &lt;h5&gt;Arbeiten mit Velocity&lt;/h5&gt;  &lt;p&gt;Wie funktioniert nun der Zugriff auf die Cache Objekte? Es gibt hier zum einen ein Velocity Client der dafür sorgt das über die Routing Tabelle auf die richtigen Inhalte im verteilten Zwischenspeicher zugegriffen wird, zum anderen gibt es den Velocity Service der dafür verantwortlich ist mit den anderen Diensten innerhalb des Clusters zu kommunizieren. Eine grobe Übersicht der Architektur gibt das folgende Schaubild:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/dparys/WindowsLiveWriter/VelocityEineEinfhrung_5AB8/shot2_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" title="shot2" border="0" alt="shot2" src="http://blogs.msdn.com/blogfiles/dparys/WindowsLiveWriter/VelocityEineEinfhrung_5AB8/shot2_thumb_1.png" width="456" height="544" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Auf der Basta habe ich in meinem Velocity Vortrag eine Demo gezeigt, aber ich habe ganz vergessen zu zeigen wie der Quellcode aussieht um Objekte in den Cache zu legen. Vielleicht habe ich es unbewußt weggelassen weil die API wirklich sehr einfach gestrickt ist.&lt;/p&gt;  &lt;div&gt;   &lt;div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;     &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; text = &lt;span style="color: #006080"&gt;&amp;quot;Bitte zwischenspeichern!&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; CacheFactory cacheFactory = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; CacheFactory();&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt; Cache cache = cacheFactory.GetCache();&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt; &lt;span style="color: #008000"&gt;// Objekt in Cache Speichern&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt; CacheItemVersion item = cache.Add(&lt;span style="color: #006080"&gt;&amp;quot;EindeutigerKey&amp;quot;&lt;/span&gt;, text );&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;   9:&lt;/span&gt; &lt;span style="color: #008000"&gt;// Objekt wieder aus dem Cache lesen&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060"&gt;  10:&lt;/span&gt; item = ( &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; ) cache.Get( &lt;span style="color: #006080"&gt;&amp;quot;EindeutigerKey&amp;quot;&lt;/span&gt; );&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Die API verfügt zum arbeiten mit den Cache Objekten die Aufrufe, &lt;em&gt;Add&lt;/em&gt;, &lt;em&gt;Get&lt;/em&gt;, &lt;em&gt;Put &lt;/em&gt;und &lt;em&gt;Remove&lt;/em&gt;. Daneben hat man noch die Möglichkeit nach Tags zu suchen und komplette Regionen und Listen zu enumerieren. Das war es schon. &lt;/p&gt;

&lt;p&gt;Velocity ist momentan als CTP1 verfügbar. Im CTP1 sind noch nicht alle Features implementiert die im Release verfügbar sein sollen, unter anderem die Verfügbarkeits-Funktionalität. Diese werden erst mit dem CTP2 kommen. Microsoft würde sich über Feedback freuen.&lt;/p&gt;

&lt;p&gt;Links zum Thema&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/data/cc655792.aspx"&gt;Microsoft Project Code Named “Velocity”&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://blogs.msdn.com/velocity/"&gt;Velocity Blog&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/velocity"&gt;Velocity Code Beispiele&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8966027" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dparys/archive/tags/Connected+Systems/default.aspx">Connected Systems</category><category domain="http://blogs.msdn.com/dparys/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Data+Access/default.aspx">Data Access</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Services/default.aspx">Services</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/dparys/archive/tags/Concurrency/default.aspx">Concurrency</category></item><item><title>Probleme beim Installieren von VS 2008 SP1?</title><link>http://blogs.msdn.com/dparys/archive/2008/08/13/probleme-beim-installieren-von-vs-2008-sp1.aspx</link><pubDate>Wed, 13 Aug 2008 09:59:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8856504</guid><dc:creator>dparys</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dparys/comments/8856504.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dparys/commentrss.aspx?PostID=8856504</wfw:commentRss><wfw:comment>http://blogs.msdn.com/dparys/rsscomments.aspx?PostID=8856504</wfw:comment><description>&lt;p&gt;Unter Umst&amp;#228;nden hat sich ja der ein oder andere Entwickler die Visual Studio 2008 Service Pack 1 Beta bereits installiert und m&amp;#246;chte nun auf die finale SP1 Version wechseln. Hierzu gibt es ein Tool namens &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=A494B0E0-EB07-4FF1-A21C-A4663E456D9D&amp;amp;displaylang=en"&gt;Visual Studio 2008 Service Pack Preparation Tool&lt;/a&gt; welches die Beta Version sauber entfernt (das gibt es vor zu tun, ich habe es nicht validiert) und somit einer SP1 RTM Installation nichts mehr im Wege stehen d&amp;#252;rfte.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8856504" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dparys/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/dparys/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/dparys/archive/tags/.NET+Framework/default.aspx">.NET Framework</category></item><item><title>Training zum SP1</title><link>http://blogs.msdn.com/dparys/archive/2008/08/12/training-zum-sp1.aspx</link><pubDate>Tue, 12 Aug 2008 09:41:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8850042</guid><dc:creator>dparys</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/dparys/comments/8850042.aspx</comments><wfw:commentRss>http://blogs.msdn.com/dparys/commentrss.aspx?PostID=8850042</wfw:commentRss><wfw:comment>http://blogs.msdn.com/dparys/rsscomments.aspx?PostID=8850042</wfw:comment><description>&lt;p&gt;Das .NET Framework 3.5 Enhancements Training Kit wurde nun ebenfalls fertiggestellt. Die Themen die es umfasst sind&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;.NET 3.5 SP1&lt;/li&gt;    &lt;li&gt;ADO.NET Data Services&lt;/li&gt;    &lt;li&gt;ASP.NET MVC&lt;/li&gt;    &lt;li&gt;ASP.NET Dynamic Data&lt;/li&gt;    &lt;li&gt;ADO.NET Entity Framework&lt;/li&gt;    &lt;li&gt;ASP.NET AJAX 3.5 SP1&lt;/li&gt;    &lt;li&gt;ASP.NET Routing&lt;/li&gt;    &lt;li&gt;WCF 3.5 SP1&lt;/li&gt;    &lt;li&gt;Visual Studio 2008 SP1&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Es gibt hierzu Präsentationen, Demos und Hands-on-Labs. Letztere sind eine gute Möglichkeit sich schnell einen Überblick über eine Technologie zu verschaffen. Das ganze gibt es hier zum &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=355c80e9-fde0-4812-98b5-8a03f5874e96&amp;amp;displaylang=en"&gt;Download&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8850042" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/dparys/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.msdn.com/dparys/archive/tags/.NET+Framework/default.aspx">.NET Framework</category></item></channel></rss>