<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" gd:etag="W/&quot;DEYMQHwyfSp7ImA9WhRaEU8.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283</id><updated>2012-02-13T10:43:01.295+01:00</updated><category term="SOLID" /><category term="Silverlight 4.0" /><category term="Bridge" /><category term="Export" /><category term="Factory Design Pattern" /><category term="Download" /><category term="Factory Method" /><category term="Dublin" /><category term="Adapter" /><category term="Publication" /><category term="Windows" /><category term="Trace" /><category term="Concurrency" /><category term="Enterprise Architecture" /><category term="MDA" /><category term="Microsoft Days" /><category term="Visual Studio 2008" /><category term="Design By Contract" /><category term=".NET 4.5" /><category term="RUP" /><category term="Beta" /><category term="MCT" /><category term="Query Analyzer" /><category term="Video" /><category term="Dependency Inversion" /><category term=".NET 3.5" /><category term="eBook" /><category term="LINQ" /><category term="Builder" /><category term="DevLabs" /><category term="Oracle Proxy User" /><category term="Code Contracts" /><category term="WCF 4.0" /><category term="MVP" /><category term="UML" /><category term=".NET 3.0" /><category term="Hyper-V" /><category term="HPC" /><category term="Pex" /><category term="File Type Association" /><category term="TechEd" /><category term="Windows Phone 7" /><category term="Guide" /><category term="Asynchronous Programming" /><category term="Methodology" /><category term="Information" /><category term="Event" /><category term="Entity Framework" /><category term="Chess" /><category term="Vista" /><category term="Webcasts" /><category term="Programmez" /><category term="LINQPad" /><category term="Prism 4.0" /><category term="Architecture" /><category term="WIF" /><category term="OCUP" /><category term="Model Driven Days" /><category term="AppFabric" /><category term="Winwise" /><category term="Abstract Factory" /><category term="Parallel Programming" /><category term="CTP" /><category term="White Paper" /><category term="Tutorial" /><category term="Lambda Expressions" /><category term="Security" /><category term="Oracle" /><category term="SOA" /><category term="Azure" /><category term="Interview" /><category term="Visual Studio 2010" /><category term="Roslyn" /><category term="Language" /><category term="Layer Diagram" /><category term="SQL Azure" /><category term="Parallel Computing" /><category term="Design Patterns" /><category term="Code First" /><category term="SQL Server 2008" /><category term="Certification" /><category term="Techdays" /><category term="MDM" /><category term="OMG" /><category term="WF 4.0" /><category term="Migration" /><category term="TOGAF9" /><category term="Developpez" /><category term="Prototype" /><category term="Code Quality" /><category term="Tool" /><category term="ADO.NET" /><category term="C#" /><category term="Data Service" /><category term="Axum" /><category term="PDC" /><category term=".NET 4.0" /><category term="Database" /><category term="Concept" /><category term="Singleton" /><category term="Interface-Based Programming" /><title>Jason's Architecture and .NET Blog</title><subtitle type="html">Useful information, experiences, concepts, tips and tutorials on current and upcoming Microsoft .Net software development technologies and environments from my point of view as Solutions Architect.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>104</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/DotNetArchitecture" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="dotnetarchitecture" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DUQHRH08eCp7ImA9WhRUFUU.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-8911741686800592601</id><published>2012-01-26T15:14:00.001+01:00</published><updated>2012-01-26T15:15:35.370+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-26T15:15:35.370+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Publication" /><category scheme="http://www.blogger.com/atom/ns#" term="White Paper" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><title>[Publication] White Paper in collaboration with Microsoft: Fourth Chapter on How to develop applications for the Cloud</title><content type="html">&lt;p&gt;I am happy to announce that you can find the fourth chapter of a whitepaper on how to develop applications for the Cloud using the Windows&amp;#160; Azure platform written by me, &lt;a href="http://www.cloud-francois.com"&gt;François Merand&lt;/a&gt; and Laurent Gautier on the official Visual Studio homepage.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/france/visual-studio/scenarios/developper-pour-le-cloud.aspx"&gt;http://www.microsoft.com/france/visual-studio/scenarios/developper-pour-le-cloud.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/france/visual-studio/scenarios/developper-pour-le-cloud.aspx"&gt;&lt;img title="image" border="0" alt="image" src="http://lh5.ggpht.com/-OQnCunUnacs/Ttju4GFwe0I/AAAAAAAABTI/5aHsMAAcg0Q/image%25255B13%25255D.png?imgmax=800" width="225" height="156" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is the last chapter of the series. We will however continue to finalize and optimize the corresponding application when we find some time. So many additional things to do : ASP.NET MVC 4, IoC, additional abstractions, the implementation of the worker role and the image processing, etc…&lt;/p&gt;  &lt;p&gt;You can find the source code of the BDTheque application &lt;a href="http://bdtheque.codeplex.com"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-8911741686800592601?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=rAr_IAQCOmA:h-sjJ41Qhys:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=rAr_IAQCOmA:h-sjJ41Qhys:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=rAr_IAQCOmA:h-sjJ41Qhys:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=rAr_IAQCOmA:h-sjJ41Qhys:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=rAr_IAQCOmA:h-sjJ41Qhys:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=rAr_IAQCOmA:h-sjJ41Qhys:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=rAr_IAQCOmA:h-sjJ41Qhys:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=rAr_IAQCOmA:h-sjJ41Qhys:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/rAr_IAQCOmA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/8911741686800592601/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=8911741686800592601&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/8911741686800592601?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/8911741686800592601?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2012/01/publication-white-paper-in_26.html" title="[Publication] White Paper in collaboration with Microsoft: &lt;br /&gt;Fourth Chapter on How to develop applications for the Cloud" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-OQnCunUnacs/Ttju4GFwe0I/AAAAAAAABTI/5aHsMAAcg0Q/s72-c/image%25255B13%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEUDQ3w9eip7ImA9WhRUFEw.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-5793358059164028498</id><published>2012-01-24T15:43:00.001+01:00</published><updated>2012-01-24T15:44:32.262+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-24T15:44:32.262+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Publication" /><category scheme="http://www.blogger.com/atom/ns#" term="White Paper" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><title>[Publication] White Paper in collaboration with Microsoft: Third Chapter on How to develop applications for the Cloud</title><content type="html">&lt;p&gt;I am happy to announce that you can find the third chapter of a whitepaper on how to develop applications for the Cloud using the Windows&amp;#160; Azure platform written by me, &lt;a href="http://www.cloud-francois.com"&gt;François Merand&lt;/a&gt; and Laurent Gautier on the official Visual Studio homepage.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/france/visual-studio/scenarios/developper-pour-le-cloud.aspx"&gt;http://www.microsoft.com/france/visual-studio/scenarios/developper-pour-le-cloud.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/france/visual-studio/scenarios/developper-pour-le-cloud.aspx"&gt;&lt;img title="image" border="0" alt="image" src="http://lh5.ggpht.com/-OQnCunUnacs/Ttju4GFwe0I/AAAAAAAABTI/5aHsMAAcg0Q/image%25255B13%25255D.png?imgmax=800" width="225" height="156" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We will continue publishing the other chapters in the next weeks so stay tuned as we progress on implementing our example BDTheque application and finalizing our Whitepaper.&lt;/p&gt;  &lt;p&gt;You can find the source code of the BDTheque application &lt;a href="http://bdtheque.codeplex.com"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-5793358059164028498?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=Rlv8fCCLjaQ:KVmnzS9NF6w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=Rlv8fCCLjaQ:KVmnzS9NF6w:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=Rlv8fCCLjaQ:KVmnzS9NF6w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=Rlv8fCCLjaQ:KVmnzS9NF6w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=Rlv8fCCLjaQ:KVmnzS9NF6w:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=Rlv8fCCLjaQ:KVmnzS9NF6w:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=Rlv8fCCLjaQ:KVmnzS9NF6w:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=Rlv8fCCLjaQ:KVmnzS9NF6w:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/Rlv8fCCLjaQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/5793358059164028498/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=5793358059164028498&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/5793358059164028498?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/5793358059164028498?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2012/01/publication-white-paper-in.html" title="[Publication] White Paper in collaboration with Microsoft: &lt;br /&gt;Third Chapter on How to develop applications for the Cloud" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-OQnCunUnacs/Ttju4GFwe0I/AAAAAAAABTI/5aHsMAAcg0Q/s72-c/image%25255B13%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkYCQXcycSp7ImA9WhRWF0w.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-2827868928825419001</id><published>2012-01-03T15:37:00.001+01:00</published><updated>2012-01-04T21:49:20.999+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-04T21:49:20.999+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Publication" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="Programmez" /><title>[Publication] Article in French Programmez Magazine on Windows Azure First Steps and how to build your first application</title><content type="html">&lt;p&gt;You can find an article of 2 pages concerning Windows Azure in the French Programmez magazine No.148 written by me and &lt;a href="http://www.cloud-francois.com/" target="_blank"&gt;François Merand&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.programmez.com/magazine.php?num_magazine=148" target="_blank"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-kzPzHekGSrg/TwMSq2pv_EI/AAAAAAAABTc/3byQQRqJ8Ho/image%25255B3%25255D.png?imgmax=800" width="181" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.programmez.com/vignettes.php?num_magazine=148&amp;amp;page=38" target="_blank"&gt;First Page and Second Page (low resolution)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The article is written in French but as always I will write some English articles on my Blog in the next weeks. So stay tuned if you are interested in getting to know how to start using Windows Azure and building you first application.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-2827868928825419001?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=Fj6ZDJ7y7Iw:E1ycbl6SMoc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=Fj6ZDJ7y7Iw:E1ycbl6SMoc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=Fj6ZDJ7y7Iw:E1ycbl6SMoc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=Fj6ZDJ7y7Iw:E1ycbl6SMoc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=Fj6ZDJ7y7Iw:E1ycbl6SMoc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=Fj6ZDJ7y7Iw:E1ycbl6SMoc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=Fj6ZDJ7y7Iw:E1ycbl6SMoc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=Fj6ZDJ7y7Iw:E1ycbl6SMoc:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/Fj6ZDJ7y7Iw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/2827868928825419001/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=2827868928825419001&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/2827868928825419001?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/2827868928825419001?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2012/01/publication-article-in-french.html" title="[Publication] Article in French Programmez Magazine on Windows Azure First Steps and how to build your first application" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-kzPzHekGSrg/TwMSq2pv_EI/AAAAAAAABTc/3byQQRqJ8Ho/s72-c/image%25255B3%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0UDRXY5eSp7ImA9WhRWFEQ.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-3251486137575455668</id><published>2012-01-02T11:12:00.001+01:00</published><updated>2012-01-02T11:14:34.821+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-02T11:14:34.821+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Event" /><category scheme="http://www.blogger.com/atom/ns#" term="Techdays" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><title>[TechDays 2012] Speaker for two Windows Azure sessions and Ask the Expert (ATE) during TechDays 2012 in Paris</title><content type="html">&lt;p&gt;The TechDays 2012 will be the 7, 8 and 9 February in Paris. Many new technology trends will be presented. A must for everyone who is working in the software development sector !!! And the best of all : It is for free !&lt;/p&gt;  &lt;p&gt;I will be speaker and animate the following 2 sessions :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/france/mstechdays/programmes/parcours.aspx?SessionID=cdf25635-0933-46c9-be64-96bf548abed0" target="_blank"&gt;Mise en place d'une démarche ALM avec Visual Studio pour Windows Azure (ALM206)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/france/mstechdays/programmes/parcours.aspx?SessionID=fa5be90f-442d-450f-a437-337262fe5ea8" target="_blank"&gt;Toutes les recettes pratiques pour réussir son 1er projet Windows AZURE (PAR210)&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I will also act as ATE (Ask The Expert) and will be happy to respond to any questions you might have concerning Microsoft products during the breaks in between the different sessions.&lt;/p&gt;  &lt;p&gt;You will find me at one of the stands wearing a special shirt and being happy to exchange with you on any technical subject you might have.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/france/mstechdays" target="_blank"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-6lVJpg89QHY/TwGDED5CnvI/AAAAAAAABTU/0H_1PBeYVjQ/image%25255B11%25255D.png?imgmax=800" width="226" height="83" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Don't hesitate, inscribe yourself quickly and visit us at TechDays 2012 !!!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-3251486137575455668?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=lFjJ9hOuR-Q:kGPEShvpIMk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=lFjJ9hOuR-Q:kGPEShvpIMk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=lFjJ9hOuR-Q:kGPEShvpIMk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=lFjJ9hOuR-Q:kGPEShvpIMk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=lFjJ9hOuR-Q:kGPEShvpIMk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=lFjJ9hOuR-Q:kGPEShvpIMk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=lFjJ9hOuR-Q:kGPEShvpIMk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=lFjJ9hOuR-Q:kGPEShvpIMk:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/lFjJ9hOuR-Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/3251486137575455668/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=3251486137575455668&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/3251486137575455668?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/3251486137575455668?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2012/01/techdays-2012-speaker-for-2-windows.html" title="[TechDays 2012] Speaker for two Windows Azure sessions and Ask the Expert (ATE) during TechDays 2012 in Paris" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-6lVJpg89QHY/TwGDED5CnvI/AAAAAAAABTU/0H_1PBeYVjQ/s72-c/image%25255B11%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DU4HRX04fip7ImA9WhRXE0U.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-4834197082884832598</id><published>2011-12-20T14:31:00.001+01:00</published><updated>2011-12-20T14:32:14.336+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-20T14:32:14.336+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Publication" /><category scheme="http://www.blogger.com/atom/ns#" term="White Paper" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><title>[Publication] White Paper in collaboration with Microsoft: Second Chapter on How to develop applications for the Cloud</title><content type="html">&lt;p&gt;I am happy to announce that you can find the second chapter of a whitepaper on how to develop applications for the Cloud using the Windows&amp;#160; Azure platform written by me, &lt;a href="http://www.cloud-francois.com"&gt;François Merand&lt;/a&gt; and Laurent Gautier on the official Visual Studio homepage.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/france/visual-studio/scenarios/developper-pour-le-cloud.aspx"&gt;http://www.microsoft.com/france/visual-studio/scenarios/developper-pour-le-cloud.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/france/visual-studio/scenarios/developper-pour-le-cloud.aspx"&gt;&lt;img title="image" border="0" alt="image" src="http://lh5.ggpht.com/-OQnCunUnacs/Ttju4GFwe0I/AAAAAAAABTI/5aHsMAAcg0Q/image%25255B13%25255D.png?imgmax=800" width="225" height="156" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We will continue publishing the other chapters in the next weeks so stay tuned as we progress on implementing our example BDTheque application and finalizing our Whitepaper.&lt;/p&gt;  &lt;p&gt;You can find the source code of the BDTheque application &lt;a href="http://bdtheque.codeplex.com"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-4834197082884832598?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=_nSusPdvO5k:61ksk8Gv-c4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=_nSusPdvO5k:61ksk8Gv-c4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=_nSusPdvO5k:61ksk8Gv-c4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=_nSusPdvO5k:61ksk8Gv-c4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=_nSusPdvO5k:61ksk8Gv-c4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=_nSusPdvO5k:61ksk8Gv-c4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=_nSusPdvO5k:61ksk8Gv-c4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=_nSusPdvO5k:61ksk8Gv-c4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/_nSusPdvO5k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/4834197082884832598/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=4834197082884832598&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/4834197082884832598?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/4834197082884832598?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/12/publication-white-paper-in_20.html" title="[Publication] White Paper in collaboration with Microsoft: &lt;br /&gt;Second Chapter on How to develop applications for the Cloud" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-OQnCunUnacs/Ttju4GFwe0I/AAAAAAAABTI/5aHsMAAcg0Q/s72-c/image%25255B13%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkMBRHYyfip7ImA9WhRQEE8.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-913968800848694868</id><published>2011-12-02T16:29:00.001+01:00</published><updated>2011-12-04T18:40:55.896+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-04T18:40:55.896+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="Publication" /><category scheme="http://www.blogger.com/atom/ns#" term="White Paper" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><title>[Publication] White Paper in collaboration with Microsoft: First Chapter on How to develop applications for the Cloud</title><content type="html">&lt;p&gt;I am happy to announce that you can find the first chapter of a whitepaper on how to develop applications for the Cloud using the Windows&amp;#160; Azure platform written by me, &lt;a href="http://www.cloud-francois.com" target="_blank"&gt;François Merand&lt;/a&gt; and Laurent Gautier on the official Visual Studio homepage. &lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/france/visual-studio/scenarios/developper-pour-le-cloud.aspx" href="http://www.microsoft.com/france/visual-studio/scenarios/developper-pour-le-cloud.aspx" target="_blank"&gt;http://www.microsoft.com/france/visual-studio/scenarios/developper-pour-le-cloud.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/france/visual-studio/scenarios/developper-pour-le-cloud.aspx" target="_blank"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-OQnCunUnacs/Ttju4GFwe0I/AAAAAAAABTI/5aHsMAAcg0Q/image%25255B13%25255D.png?imgmax=800" width="225" height="156" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We will continue publishing the other chapters in the next weeks so stay tuned as we progress on implementing our example BDTheque application and finalizing our Whitepaper.&lt;/p&gt;  &lt;p&gt;You can find the source code of the BDTheque application &lt;a href="http://bdtheque.codeplex.com" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-913968800848694868?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=uyTLjFvJlHE:SyQuoEIcirk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=uyTLjFvJlHE:SyQuoEIcirk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=uyTLjFvJlHE:SyQuoEIcirk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=uyTLjFvJlHE:SyQuoEIcirk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=uyTLjFvJlHE:SyQuoEIcirk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=uyTLjFvJlHE:SyQuoEIcirk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=uyTLjFvJlHE:SyQuoEIcirk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=uyTLjFvJlHE:SyQuoEIcirk:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/uyTLjFvJlHE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/913968800848694868/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=913968800848694868&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/913968800848694868?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/913968800848694868?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/12/publication-white-paper-in.html" title="[Publication] White Paper in collaboration with Microsoft: &lt;br /&gt;First Chapter on How to develop applications for the Cloud" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-OQnCunUnacs/Ttju4GFwe0I/AAAAAAAABTI/5aHsMAAcg0Q/s72-c/image%25255B13%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0MGQXo7fyp7ImA9WhRRGEk.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-3804783055904753721</id><published>2011-12-02T14:00:00.001+01:00</published><updated>2011-12-02T16:57:00.407+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-02T16:57:00.407+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Interview" /><category scheme="http://www.blogger.com/atom/ns#" term="Publication" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="Developpez" /><title>[Publication] Interview with Developpez.com and Microsoft concerning SQL Azure and its newest features</title><content type="html">&lt;p&gt;Just a quick note that you can find an article in French written by Gordon Fowler concerning my interview with Microsoft and Developpez.com on the maturity of SQL Azure, its advantages and its new features (SQL Azure Reporting, SQL Azure Data Sync, SQL Azure Federation) under the following address.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.developpez.com/actu/39580/-SQL-Azure-devient-l-egal-de-SQL-Server-Microsoft-et-Sogeti-reviennent-sur-les-nouveautes-de-la-base-de-donnees-hebergee/" href="http://www.developpez.com/actu/39580/-SQL-Azure-devient-l-egal-de-SQL-Server-Microsoft-et-Sogeti-reviennent-sur-les-nouveautes-de-la-base-de-donnees-hebergee/"&gt;http://www.developpez.com/actu/39580/-SQL-Azure-devient-l-egal-de-SQL-Server-Microsoft-et-Sogeti-reviennent-sur-les-nouveautes-de-la-base-de-donnees-hebergee/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.developpez.com/actu/39580/-SQL-Azure-devient-l-egal-de-SQL-Server-Microsoft-et-Sogeti-reviennent-sur-les-nouveautes-de-la-base-de-donnees-hebergee/" target="_blank"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-76gqccwQc04/TtjL-IBMATI/AAAAAAAABTA/e3hdL-cEWiw/image%25255B3%25255D.png?imgmax=800" width="222" height="94" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-3804783055904753721?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=7fNiTd1O45o:SEz1dP3Z6ZM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=7fNiTd1O45o:SEz1dP3Z6ZM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=7fNiTd1O45o:SEz1dP3Z6ZM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=7fNiTd1O45o:SEz1dP3Z6ZM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=7fNiTd1O45o:SEz1dP3Z6ZM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=7fNiTd1O45o:SEz1dP3Z6ZM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=7fNiTd1O45o:SEz1dP3Z6ZM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=7fNiTd1O45o:SEz1dP3Z6ZM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/7fNiTd1O45o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/3804783055904753721/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=3804783055904753721&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/3804783055904753721?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/3804783055904753721?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/12/publication-interview-with.html" title="[Publication] Interview with Developpez.com and Microsoft concerning SQL Azure and its newest features" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-76gqccwQc04/TtjL-IBMATI/AAAAAAAABTA/e3hdL-cEWiw/s72-c/image%25255B3%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0AFRnc-eSp7ImA9WhRRF04.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-4432389965311442001</id><published>2011-12-01T11:33:00.001+01:00</published><updated>2011-12-01T11:35:17.951+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-01T11:35:17.951+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Publication" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET 4.0" /><category scheme="http://www.blogger.com/atom/ns#" term="Programmez" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Code Contracts" /><title>[Publication] Article in French Programmez Magazine on Design By Contract and Code Contracts using C# 4.0</title><content type="html">&lt;p&gt;You can find an article of 4 pages concerning Design By Contract and more specific Code Contracts using C# 4.0 in the French Programmez magazine No.147 written by me and &lt;a href="http://blogs.codes-sources.com/fathi/default.aspx" target="_blank"&gt;Fathi Bellahcene&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.programmez.com/magazine.php?num_magazine=147" target="_blank"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-dH_qSjn2zYc/TtdYDbHpksI/AAAAAAAABS4/Dbv4iiPw0LY/image%25255B4%25255D.png?imgmax=800" width="181" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.programmez.com/vignettes.php?num_magazine=147&amp;amp;page=57" target="_blank"&gt;First Page and Second Page (low resolution)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.programmez.com/vignettes.php?num_magazine=147&amp;amp;page=59" target="_blank"&gt;Third Page and Fourth Page (low resolution)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The article is written in French but as always I will write some English articles on my Blog in the next weeks. So stay tuned if you are interested in getting to know Code Contracts in C# 4.0 and how it may help you to improve the quality of your code .&lt;/p&gt;  &lt;p&gt;You can find the source code here:    &lt;br /&gt;&lt;a href="http://designbycontract.codeplex.com/" target="_blank"&gt;http://designbycontract.codeplex.com&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-4432389965311442001?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=WA2Ljjibh7I:wXzSvxs4TDM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=WA2Ljjibh7I:wXzSvxs4TDM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=WA2Ljjibh7I:wXzSvxs4TDM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=WA2Ljjibh7I:wXzSvxs4TDM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=WA2Ljjibh7I:wXzSvxs4TDM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=WA2Ljjibh7I:wXzSvxs4TDM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=WA2Ljjibh7I:wXzSvxs4TDM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=WA2Ljjibh7I:wXzSvxs4TDM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/WA2Ljjibh7I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/4432389965311442001/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=4432389965311442001&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/4432389965311442001?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/4432389965311442001?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/12/publication-article-in-french.html" title="[Publication] Article in French Programmez Magazine on Design By Contract and Code Contracts using C# 4.0" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-dH_qSjn2zYc/TtdYDbHpksI/AAAAAAAABS4/Dbv4iiPw0LY/s72-c/image%25255B4%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Ck4GRXc8eip7ImA9WhRTE04.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-1857229755613325730</id><published>2011-11-03T14:57:00.001+01:00</published><updated>2011-11-03T15:35:24.972+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-03T15:35:24.972+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TOGAF9" /><category scheme="http://www.blogger.com/atom/ns#" term="Enterprise Architecture" /><category scheme="http://www.blogger.com/atom/ns#" term="Certification" /><title>[Certifications] Now TOGAF9 certified !</title><content type="html">&lt;p&gt;Just to let you know that I passed the two TOGAF9 exams lately (Foundation &amp;amp; Certified) during the combined OG0-093 exam. &lt;/p&gt;  &lt;p&gt;I am happy to announce that I am now TOGAF9 certified !&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-EYsLbKCYkqY/TrKd0HxleTI/AAAAAAAABSU/3MP2zNVxovo/s1600-h/togaf9-certified-org%25255B5%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Cert_ITSpec" border="0" alt="Cert_ITSpec" src="http://lh3.ggpht.com/-nH4qwcESdaE/TrKd0uKGi9I/AAAAAAAABSY/cxKYqrX3vgY/togaf9-certified-org_thumb%25255B3%25255D.jpg?imgmax=800" width="404" height="156" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For more information concerning the TOGAF9 Framework please consult the official website of The Open Group : &lt;a title="http://www.opengroup.org/togaf/" href="http://www.opengroup.org/togaf/" target="_blank"&gt;http://www.opengroup.org/togaf/&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-1857229755613325730?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=nOHbWC6XMYg:rgFjDh9KFfI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=nOHbWC6XMYg:rgFjDh9KFfI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=nOHbWC6XMYg:rgFjDh9KFfI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=nOHbWC6XMYg:rgFjDh9KFfI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=nOHbWC6XMYg:rgFjDh9KFfI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=nOHbWC6XMYg:rgFjDh9KFfI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=nOHbWC6XMYg:rgFjDh9KFfI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=nOHbWC6XMYg:rgFjDh9KFfI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/nOHbWC6XMYg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/1857229755613325730/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=1857229755613325730&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/1857229755613325730?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/1857229755613325730?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/11/certifications-now-togaf9-certified.html" title="[Certifications] Now TOGAF9 certified !" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-nH4qwcESdaE/TrKd0uKGi9I/AAAAAAAABSY/cxKYqrX3vgY/s72-c/togaf9-certified-org_thumb%25255B3%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Ak4NRH0_cSp7ImA9WhdaEEg.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-1070592761702609899</id><published>2011-10-19T22:31:00.001+02:00</published><updated>2011-10-19T23:16:35.349+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-19T23:16:35.349+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CTP" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Roslyn" /><title>[C# and Language] Compiler as a Service (CaaS) Roslyn CTP released</title><content type="html">&lt;p&gt;Microsoft announces the release of its Roslyn CTP, the first example of the implementation of CaaS (Compiler as a Service) that I presented some time ago. This release marks a significant step to how Microsoft thinks of compilers. The C# and VB compilers are no longer black boxes.&amp;#160; All that rich information about code is now exposed as an object model that can be easily consumed. In addition, Microsoft has released a preview of the first-ever Interactive window for C# that contains full IDE support, including IntelliSense and even automatically detecting missing using directives.&lt;/p&gt;  &lt;p&gt;You can download it here:    &lt;br /&gt;&lt;a href="http://msdn.com/roslyn"&gt;http://msdn.com/roslyn&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.com/roslyn" target="_blank"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-ZkCZoQRM19I/Tp8zkJw5u3I/AAAAAAAABRQ/laJRtL4s6NM/image%25255B4%25255D.png?imgmax=800" width="244" height="108" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-1070592761702609899?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=hXoy20Fp3HU:oSGD1bo1L1U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=hXoy20Fp3HU:oSGD1bo1L1U:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=hXoy20Fp3HU:oSGD1bo1L1U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=hXoy20Fp3HU:oSGD1bo1L1U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=hXoy20Fp3HU:oSGD1bo1L1U:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=hXoy20Fp3HU:oSGD1bo1L1U:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=hXoy20Fp3HU:oSGD1bo1L1U:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=hXoy20Fp3HU:oSGD1bo1L1U:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/hXoy20Fp3HU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/1070592761702609899/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=1070592761702609899&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/1070592761702609899?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/1070592761702609899?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/10/c-and-language-compiler-as-service-caas.html" title="[C# and Language] Compiler as a Service (CaaS) &lt;br /&gt;Roslyn CTP released" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-ZkCZoQRM19I/Tp8zkJw5u3I/AAAAAAAABRQ/laJRtL4s6NM/s72-c/image%25255B4%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkACQ3Y7eSp7ImA9WhdbGEg.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-3440551329821726067</id><published>2011-10-17T15:35:00.001+02:00</published><updated>2011-10-17T15:39:22.801+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-17T15:39:22.801+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial" /><category scheme="http://www.blogger.com/atom/ns#" term="Code First" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET 4.0" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Entity Framework" /><title>[Tutorial] Code First with Entity Framework 4.1 Part5: Concurrency Management &amp; Conclusion</title><content type="html">Assuring the consistence and coherence of data in the database is a very important topic. Concurrency problems come up when multiple source (clients, systems, etc…) try to modify data at the same time.Your application must be able to choose whether to accept or reject any data changes that arrive simultaneously.&lt;br /&gt;
&lt;br /&gt;
Simultaneous execution of transactions must provide the same results as sequential execution of those same transactions.If you achieve this goal then your system is well prepared for correct concurrency handling.&lt;br /&gt;
&lt;br /&gt;
Entity Framework 4.1 includes a very complete concurrency approach. The DbContext class that we already saw before allows for efficient concurrency handling.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;First Wins&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This resolution strategy defines that the first modification wins if there are concurrency conflicts. All following modifications on the same data are ignored and clients get exceptions that tell them that their transactions did not complete because the data was already changed.&lt;br /&gt;
&lt;br /&gt;
You have to determine which properties might be subject to concurrency problems. You may have properties which do not need any concurrency handling. A property that contains the last modified date might not need to implement any concurrency handling for example.&lt;br /&gt;
&lt;br /&gt;
All properties that must be checked for concurrency need to have the [ConcurrencyCheck] attribute set as shown below:&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://lh3.ggpht.com/-YiT4vu0GabI/TpwvJhxgkaI/AAAAAAAABQQ/NEFKgsFQatY/s1600-h/image12.png"&gt;&lt;img alt="image" border="0" height="73" src="http://lh3.ggpht.com/-K-nmXlp2qLg/TpwvKGJ2lGI/AAAAAAAABQY/G2NLR1dJKB4/image_thumb8.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="334" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
If you don't like using attributes, you may also use the CodeFirst Fluent API on your properties to activate concurrency checking:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://lh5.ggpht.com/-1i6NWprPHmY/TpwvKV1rIFI/AAAAAAAABQg/VkY3CCGNuu4/s1600-h/image11.png"&gt;&lt;img alt="image" border="0" height="67" src="http://lh4.ggpht.com/-GHYwHjupVck/TpwvK-ZI4AI/AAAAAAAABQo/HcEwdfeole8/image_thumb7.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="424" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
You have to add concurrency checks only on properties that really need it since this will have some impact on performance within your code. The more properties with activated concurrency checks you have the worse your performance might be depending on your implementation !&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://lh5.ggpht.com/-Nur1rgf9Yu0/TpwvLMa8BgI/AAAAAAAABQw/rOnWLq4f5Rc/s1600-h/image20.png"&gt;&lt;img alt="image" border="0" height="412" src="http://lh6.ggpht.com/-OdIdQXpqv08/TpwvLmMjrSI/AAAAAAAABQ4/jW__y5xs3uo/image_thumb12.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="424" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
In the example above we retrieve a manager object from the database, store it in memory and change some property values (but only in memory). We then change some values on the same data directly in the database to simulate concurrency as if two clients did modifications at the same time.&lt;br /&gt;
&lt;br /&gt;
When we call the SaveChanges() method you will see that we get an exception of type DbUpdateConcurrencyException. This is where you need to add your custom concurrency conflict resolution logic. In this example we decided to guard the first modification (First Wins). In the last step we update the context in memory with the data that was changed in the database via ex.GetEntry(context).Reload().&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Last Wins&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This is the default resolution strategy of EF 4.1 in case of concurrency conflicts. It defines that the last modification wins if there are concurrency conflicts. All previous modifications on the same data are overwritten. Clients only get informed if they use the [ConcurrencyCheck] attribute, some kind of log, some event or other treatment.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://lh4.ggpht.com/-B4NuHH5PYXQ/TpwvMLTLZLI/AAAAAAAABRA/EtNuxzfnI5E/s1600-h/image24.png"&gt;&lt;img alt="image" border="0" height="498" src="http://lh4.ggpht.com/-1fWMyKRLjZM/TpwvMny561I/AAAAAAAABRI/rZUZd3Z-TMw/image_thumb14.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="424" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The example above shows how to implement a Last Wins approach. If there are exceptions due to concurrency conflicts we store the new initial value in the context thus synchronizing with the source. We then retry saving the data until it is saved to the database and the processing is successfully completed.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I hope this tutorial gave you a first insight on the new features of EF 4.1 which are quite powerful even for code purists. With the new features presented in this tutorial EF becomes one of the most complete products on the ORM market. Today, it is the only product that proposes all 3 approaches&lt;br /&gt;
CodeFirst, Database First and Model First at the same time.&lt;br /&gt;
&lt;br /&gt;
Some features are missing like auto-synchronization of the database if the class structure changes and stored procedure integration but they will be added in the next weeks / months.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-3440551329821726067?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=nus9WK3ytpE:7VPzWpha2ZA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=nus9WK3ytpE:7VPzWpha2ZA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=nus9WK3ytpE:7VPzWpha2ZA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=nus9WK3ytpE:7VPzWpha2ZA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=nus9WK3ytpE:7VPzWpha2ZA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=nus9WK3ytpE:7VPzWpha2ZA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=nus9WK3ytpE:7VPzWpha2ZA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=nus9WK3ytpE:7VPzWpha2ZA:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/nus9WK3ytpE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/3440551329821726067/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=3440551329821726067&amp;isPopup=true" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/3440551329821726067?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/3440551329821726067?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/10/tutorial-code-first-with-entity.html" title="[Tutorial] Code First with Entity Framework 4.1 &lt;br/&gt;Part5: Concurrency Management &amp; Conclusion" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-K-nmXlp2qLg/TpwvKGJ2lGI/AAAAAAAABQY/G2NLR1dJKB4/s72-c/image_thumb8.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;A0UHSHk4cSp7ImA9WhdbGEk.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-8248692546866319458</id><published>2011-10-17T13:00:00.001+02:00</published><updated>2011-10-17T13:00:39.739+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-17T13:00:39.739+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET 4.5" /><category scheme="http://www.blogger.com/atom/ns#" term="Information" /><title>[.NET 4.5] In-Place Upgrade to .NET 4.0 SP1</title><content type="html">&lt;p&gt;After the BUILD conference we now have more information on how Microsoft plans to do the upgrade from .NET 4.0 SP1 to .NET 4.5 and what this upgrade will imply.&lt;/p&gt;  &lt;p&gt;Contrary to all other upgrades in the last years this will not be a side-by side upgrade but instead an in-place update. The .NET 4.0 SP1 framework will be replaced on the system during the upgrade process. Furthermore it seems that you won’t be able to go back once you have done the upgrade.&lt;/p&gt;  &lt;p&gt;To allow such an update Microsoft will have to assure that old code that ran under .NET 4.0 SP1 will still run correctly under .NET 4.5 which is not an easy task. But the Microsoft staff is currently working hard to assure everything will work seamlessly when the final version of .NET 4.5 is shipping.&lt;/p&gt;  &lt;p&gt;I will post a migration tutorial when the final version will be published and try to help you in having a good migration strategy.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-8248692546866319458?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=dMh2qPhAICw:h4GkaPcZwC4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=dMh2qPhAICw:h4GkaPcZwC4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=dMh2qPhAICw:h4GkaPcZwC4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=dMh2qPhAICw:h4GkaPcZwC4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=dMh2qPhAICw:h4GkaPcZwC4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=dMh2qPhAICw:h4GkaPcZwC4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=dMh2qPhAICw:h4GkaPcZwC4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=dMh2qPhAICw:h4GkaPcZwC4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/dMh2qPhAICw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/8248692546866319458/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=8248692546866319458&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/8248692546866319458?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/8248692546866319458?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/10/net-45-in-place-upgrade-to-net-40-sp1.html" title="[.NET 4.5] In-Place Upgrade to .NET 4.0 SP1" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0ICQnk-fSp7ImA9WhdVEE0.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-6096855237760319917</id><published>2011-09-14T13:59:00.001+02:00</published><updated>2011-09-14T13:59:23.755+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-14T13:59:23.755+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft Days" /><title>[MS Days 2011] ATE during Microsoft Days in Paris</title><content type="html">&lt;p&gt;I will be acting as ATE (Ask The Expert) during the Microsoft Days in Paris the 4th of October and will be happy to respond to any questions you might have concerning Microsoft products during the breaks in between the different sessions.&lt;/p&gt;  &lt;p&gt;You will find me at one of the stands wearing a special shirt (!)and being happy to exchange with you on any technical subject you might have. See you there the 4th of October !!&lt;/p&gt;  &lt;p&gt;Please mind that the Microsoft Days will be present in different cities all around France so choose which is the nearest to you and try to find some time to assist. It is well worth getting to know the latest technologies and news on upcoming Microsoft products. And the best of all : It is for free !&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Following are all the dates and places of the Microsoft Days end of 2011:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt; 27 September : Nantes&lt;/li&gt;    &lt;li&gt;&amp;#160;&lt;font style="background-color: #ffff00"&gt;04 October : Paris&lt;/font&gt;&lt;/li&gt;    &lt;li&gt; 13 October : Strasbourg&lt;/li&gt;    &lt;li&gt; 20 October : Lille&lt;/li&gt;    &lt;li&gt; 03 November : Marseille&lt;/li&gt;    &lt;li&gt; 09 November : Lyon&lt;/li&gt;    &lt;li&gt; 15 November Bordeaux&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;The event is free of charge and you can register here: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/france/microsoft-days/default.aspx" target="_blank"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-scOC18nrZlg/TnCXGuRmG9I/AAAAAAAABQM/20k36WlQqzU/image%25255B7%25255D.png?imgmax=800" width="424" height="172" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-6096855237760319917?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=LNpg9HXn3Mc:jhtN8ttoyvI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=LNpg9HXn3Mc:jhtN8ttoyvI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=LNpg9HXn3Mc:jhtN8ttoyvI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=LNpg9HXn3Mc:jhtN8ttoyvI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=LNpg9HXn3Mc:jhtN8ttoyvI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=LNpg9HXn3Mc:jhtN8ttoyvI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=LNpg9HXn3Mc:jhtN8ttoyvI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=LNpg9HXn3Mc:jhtN8ttoyvI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/LNpg9HXn3Mc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/6096855237760319917/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=6096855237760319917&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/6096855237760319917?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/6096855237760319917?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/09/ms-days-2011-ate-during-microsoft-days.html" title="[MS Days 2011] ATE during Microsoft Days in Paris" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-scOC18nrZlg/TnCXGuRmG9I/AAAAAAAABQM/20k36WlQqzU/s72-c/image%25255B7%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEMNQH09fip7ImA9WhdREk0.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-1185784381505865143</id><published>2011-08-01T15:47:00.002+02:00</published><updated>2011-08-01T15:48:11.366+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-01T15:48:11.366+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial" /><category scheme="http://www.blogger.com/atom/ns#" term="Code First" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET 4.0" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Entity Framework" /><title>[Tutorial] Code First with Entity Framework 4.1 Part4: Data Audit</title><content type="html">&lt;p&gt;All properties within objects managed by the Entity Framework can be audited. This is very helpful if you need to display changes to objects before saving them, cancel modifications by resetting the current value with the initial value or handling concurrency problems.&lt;/p&gt;&lt;p&gt;Entity Framework 4.1 permits accessing the following property versions of an entity:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Database Value &lt;/li&gt;
&lt;li&gt;Original Value &lt;/li&gt;
&lt;li&gt;Current Value &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-8INqIMrakXA/Tjaudf5_FwI/AAAAAAAABPw/6NdELJPwb8w/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-C20gdOPe3iw/Tjaud92K2pI/AAAAAAAABP0/Afq8C0qjkyo/image_thumb%25255B1%25255D.png?imgmax=800" width="424" height="340" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;When executing the code above the different values for the Name property of the Manager class are displayed.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-44jQ6zzcSsE/TjaueZQWj6I/AAAAAAAABP4/RxswEqg3mDg/s1600-h/image%25255B7%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-AVnEqebAbLU/TjauekeIlAI/AAAAAAAABP8/tvSG2UpkaUQ/image_thumb%25255B3%25255D.png?imgmax=800" width="424" height="98" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;As you see, adding audit functionality to your applications is really quick to do, Entity Framework 4.1 contains already everything necessary to implement it very easily.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-1185784381505865143?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=mVYoKXnIAeU:9_cywh-Swaw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=mVYoKXnIAeU:9_cywh-Swaw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=mVYoKXnIAeU:9_cywh-Swaw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=mVYoKXnIAeU:9_cywh-Swaw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=mVYoKXnIAeU:9_cywh-Swaw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=mVYoKXnIAeU:9_cywh-Swaw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=mVYoKXnIAeU:9_cywh-Swaw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=mVYoKXnIAeU:9_cywh-Swaw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/mVYoKXnIAeU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/1185784381505865143/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=1185784381505865143&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/1185784381505865143?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/1185784381505865143?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/08/tutorial-code-first-with-entity.html" title="[Tutorial] Code First with Entity Framework 4.1&lt;br&gt; Part4: Data Audit" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-C20gdOPe3iw/Tjaud92K2pI/AAAAAAAABP0/Afq8C0qjkyo/s72-c/image_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Dk4ERHg_eSp7ImA9WhdSF0Q.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-7393400444548433784</id><published>2011-07-27T12:17:00.003+02:00</published><updated>2011-07-27T21:28:25.641+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-27T21:28:25.641+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial" /><category scheme="http://www.blogger.com/atom/ns#" term="Code First" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET 4.0" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Entity Framework" /><title>[Tutorial] Code First with Entity Framework 4.1 Part3: Data Validation</title><content type="html">&lt;p&gt;Data validation is a very important subject when developing applications. You have to assure good quality and high integrity of your data for being able to exploit it correctly. You need to avoid storing any corrupt, incomplete or wrong data in your database which will most certainly lead to misbehavior within your applications.    &lt;br /&gt;
&lt;/p&gt;&lt;p&gt;The following example shows how to implement a constraint on the Name property (required / string length between 5 and 20 characters) via Data Annotations.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-OwNGdY8t3iY/Ti_ltLF48nI/AAAAAAAABPI/4iHf0QLLHzY/s1600-h/image%25255B5%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-sAjXyqRHNac/Ti_ltuNS0fI/AAAAAAAABPM/-zQNCOo5Ln4/image_thumb%25255B3%25255D.png?imgmax=800" width="424" height="62" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Validation is automatically done when calling the Save method to persist any changes applied to your objects in memory. But you may as well do it before by calling the GetValidationErrors method.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-fxsUZDFqHbI/Ti_lt7rVFCI/AAAAAAAABPQ/f2z1bPgRBFk/s1600-h/image%25255B9%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-e8E1HvD5REg/Ti_lug3XM8I/AAAAAAAABPU/_BjvC3qZnws/image_thumb%25255B5%25255D.png?imgmax=800" width="424" height="321" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Lets say when the code above is executed it will fail due to validation errors. In this case error messages will be displayed for each constraint that was not respected. In our example we defined that the Name property should have a minimum string length of 5 characters, but the property only contains 4 characters. Since we did not define a specific error message, a generic error message will be displayed for this validation error.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-8KlNdBLIfiw/TjBmsFephcI/AAAAAAAABPY/92Zmr8G7BiE/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-IPlyhNGsYcw/TjBmsv4j7bI/AAAAAAAABPc/ZnzdPvtnUpU/image_thumb%25255B1%25255D.png?imgmax=800" width="424" height="98" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;
&lt;br /&gt;
There are multiple Data Annotations that allow for type validation, format validation, regular expression matching, etc….&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-7393400444548433784?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=U8OmF1gyd-M:ic-CQPxBDqc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=U8OmF1gyd-M:ic-CQPxBDqc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=U8OmF1gyd-M:ic-CQPxBDqc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=U8OmF1gyd-M:ic-CQPxBDqc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=U8OmF1gyd-M:ic-CQPxBDqc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=U8OmF1gyd-M:ic-CQPxBDqc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=U8OmF1gyd-M:ic-CQPxBDqc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=U8OmF1gyd-M:ic-CQPxBDqc:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/U8OmF1gyd-M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/7393400444548433784/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=7393400444548433784&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/7393400444548433784?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/7393400444548433784?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/07/tutorial-code-first-with-entity_27.html" title="[Tutorial] Code First with Entity Framework 4.1 &lt;br&gt;Part3: Data Validation" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-sAjXyqRHNac/Ti_ltuNS0fI/AAAAAAAABPM/-zQNCOo5Ln4/s72-c/image_thumb%25255B3%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUMASXs5cCp7ImA9WhdSFkQ.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-7518686616719007867</id><published>2011-07-26T17:16:00.002+02:00</published><updated>2011-07-26T17:17:28.528+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-26T17:17:28.528+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial" /><category scheme="http://www.blogger.com/atom/ns#" term="Code First" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET 4.0" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Entity Framework" /><title>[Tutorial] Code First with Entity Framework 4.1 Part2: Data Annotations &amp; Code First Fluent API</title><content type="html">&lt;p&gt;The new version of Entity Framework supports the usage of Data Annotations. Data Annotations are used for validation purposes and also for mapping definitions between code and columns in the database. &lt;/p&gt;&lt;p&gt;All annotations are implemented as attributes which can be found in the System.ComponentModel.DataAnnotations&amp;#160; namespace (same attributes that are used for ASP.NET MVC validation purposes).&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Common attributes:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;[Key] – Column(s) that define the Primary Key in the database table &lt;/li&gt;
&lt;li&gt;[StringLength] – Minimal and maximal string length (only used for validation purposes not as database constraints) &lt;/li&gt;
&lt;li&gt;[MaxLength] – Can be used instead of [StringLength] to just define the maximal string length of a column &lt;/li&gt;
&lt;li&gt;[ConcurrencyCheck] – Flag that indicates that concurrency checks are activated for the column&amp;#160; &lt;/li&gt;
&lt;li&gt;[Required] – Flag that indicates that a value is required for the column (column is flagged as not null) &lt;/li&gt;
&lt;li&gt;[Timestamp] – Flag on time stamp columns which is used for concurrency checks &lt;/li&gt;
&lt;li&gt;[Column] – Specify the name of a column (default property name), can also be used to define the column position &lt;/li&gt;
&lt;li&gt;[Table] – Specify the name of a table (default class name) &lt;/li&gt;
&lt;li&gt;[DatabaseGenerated] – Flag that indicates that the value is filled by the database (possible values are Computed, Identity, None) &lt;/li&gt;
&lt;li&gt;[NotMapped] – Is used to define a property in the class that does not get generated in the database. &lt;/li&gt;
&lt;li&gt;[ForeignKey] and [InverseProperty] – Column(s) that are defined as Foreign Keys &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Following an example for the usage of Data Annotations that was applied to our company domain. The Manager class does not currently contain any properties that could automatically be identified as primary key.&lt;/p&gt;&lt;p&gt;By adding the [Key] attribute to the ManagerCode property you define that this property should act as primary key. You furthermore add a concurrency check as well as a minimum and maximum length setting for the Name property.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/--aq9RWipgro/Ti7aW7qb1mI/AAAAAAAABOo/4d62_YY1Ofc/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-TgyfcLCi-UQ/Ti7aXN2dZxI/AAAAAAAABOs/cfDh18YuE4w/image_thumb%25255B2%25255D.png?imgmax=800" width="424" height="134" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In the following example we add a required constraint to the Department class by applying the [Required] Data Annotation to the Name property.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-mO2oWtLx-lY/Ti7aXXGvuiI/AAAAAAAABOw/MrklL6VzKIA/s1600-h/image%25255B8%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-TON01D9SyzI/Ti7aYFBphCI/AAAAAAAABO0/s57Wl7w8llM/image_thumb%25255B4%25255D.png?imgmax=800" width="424" height="107" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Data Annotations are definitely easy to use but it&amp;#160; is preferable to use a programmatic approach that provides much more flexibility.&amp;#160; This approach is based on the Code First Fluent API. &lt;/p&gt;&lt;p&gt;You have to implement the OnModelCreating method within the derived CompanyContext class. Then you define your constraints applicable to your domain within this method programmatically.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-PRGoGQfVl6U/Ti7aYUWQF0I/AAAAAAAABO4/IAS-Nq01_h4/s1600-h/image%25255B12%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-W1ZggHsSw7Q/Ti7aYyJ7StI/AAAAAAAABO8/g14fz-fgfog/image_thumb%25255B6%25255D.png?imgmax=800" width="424" height="98" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;When using this approach you may even describe relations between tables and columns. The following code example defines that the Manager entity contains a Department entity. The key that relates both is the DepartmentId.&amp;#160; If the Manager entity is deleted then the corresponding Department must also be deleted&amp;#160; (CascadeOnDelete).&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-RcnnHnL58oI/Ti7aZJlhViI/AAAAAAAABPA/uOflPhTFkgk/s1600-h/image%25255B17%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-ErCnPqUYIX4/Ti7aZkNIUBI/AAAAAAAABPE/xZ6haNmbtnI/image_thumb%25255B9%25255D.png?imgmax=800" width="354" height="109" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-7518686616719007867?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=JzM47f9825w:NJ6QjkqqT4U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=JzM47f9825w:NJ6QjkqqT4U:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=JzM47f9825w:NJ6QjkqqT4U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=JzM47f9825w:NJ6QjkqqT4U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=JzM47f9825w:NJ6QjkqqT4U:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=JzM47f9825w:NJ6QjkqqT4U:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=JzM47f9825w:NJ6QjkqqT4U:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=JzM47f9825w:NJ6QjkqqT4U:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/JzM47f9825w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/7518686616719007867/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=7518686616719007867&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/7518686616719007867?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/7518686616719007867?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/07/tutorial-code-first-with-entity_26.html" title="[Tutorial] Code First with Entity Framework 4.1 &lt;br&gt;Part2: Data Annotations &amp;amp; Code First Fluent API" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-TgyfcLCi-UQ/Ti7aXN2dZxI/AAAAAAAABOs/cfDh18YuE4w/s72-c/image_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D0MERHwycCp7ImA9WhdSFUQ.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-2499786924780543319</id><published>2011-07-25T13:54:00.006+02:00</published><updated>2011-07-25T14:03:25.298+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-25T14:03:25.298+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial" /><category scheme="http://www.blogger.com/atom/ns#" term="Code First" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET 4.0" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Entity Framework" /><title>[Tutorial] Code First with Entity Framework 4.1 Part1: Introduction to the Code First approach</title><content type="html">&lt;p&gt;This tutorial introduces the new functionalities that were added to Entity Framework 4.1. It shows the differences between the approaches and acts as an introduction to these new features.&lt;/p&gt;&lt;h4&gt;Database First &amp;amp; Model First&lt;/h4&gt;&lt;p&gt;The Database First approach is interesting when the database already exists. You use Visual Studio and the Entity Framework Designer to generate the C# and VB.NET classes which reflect the existing database model. &lt;/p&gt;&lt;p&gt;You may then change relations and structures using the Designer (or the XML mapping files) to further optimize the model. The priority is the database - the code and the model are only secondary.&lt;/p&gt;&lt;p&gt;The Model First approach is important when you begin from scratch. You start with the entity model and use the Entity Framework Designer to design the relations and the entities. &lt;/p&gt;&lt;p&gt;Then you generate the C# and VB.NET classes and also the database from within Visual Studio. The priority is the model - the code and the database are only secondary.&lt;/p&gt;&lt;h4&gt;Code First&lt;/h4&gt;&lt;p&gt;When your priority is the code and you want to begin from scratch without any existing schemas or XML mapping files using source code, then the approach is called Code First. &lt;/p&gt;&lt;p&gt;You simply create your domain classes and Entity Framework 4.1 will easily allow to use them with the database and the future model.&lt;/p&gt;&lt;p&gt;You use a context and are able to execute Linq2Entities queries in no time ! You may even take advantage of the change tracking features ! &lt;/p&gt;&lt;p&gt;Entity Framework handles all of the background work and manages the interaction with the database. All the classes that are used during runtime are auto-generated.&lt;/p&gt;&lt;p&gt;In this case the configuration is not read from XML files but instead read from the configuration of the DbContext object in memory.    &lt;br /&gt;
&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Code First allows:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Developing without the need to use the Designer or XML mapping files &lt;/li&gt;
&lt;li&gt;Defining the objects of the model based on a POCO (Plain Old CLR Objects) approach &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Design and implement a company domain with Managers, Collaborators and Departments. &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-VJSI7Ec01uI/Ti1ZXPCjXVI/AAAAAAAABOI/-7u7K1YHWoU/s1600-h/Fig1_ClassDiagram%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Fig1_ClassDiagram" border="0" alt="Fig1_ClassDiagram" src="http://lh6.ggpht.com/-kwt5VpDwYkk/Ti1ZXnv2bpI/AAAAAAAABOM/aSObverkxmw/Fig1_ClassDiagram_thumb%25255B2%25255D.png?imgmax=800" width="424" height="252" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Create your classes using a standard object oriented approach and using inheritance when appropriate. &lt;/li&gt;
&lt;li&gt;Use the POCO approach for your classes where possible. &lt;/li&gt;
&lt;li&gt;Note that for being able to use the auto-mapping feature for the primary keys you need to have named your class properties like this : [Classname]Id. &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-Xoa3v1tm4Qk/Ti1ZYOlaEPI/AAAAAAAABOQ/2NqxCOXwOaU/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-NUmWIHVj21g/Ti1ZYXHx_QI/AAAAAAAABOU/16ZWoBKioCU/image_thumb%25255B1%25255D.png?imgmax=800" width="424" height="261" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Entity Framework 4.1 allows connecting those POCO classes with the database very easily by using the ObjectContext class (and in particular the DbContext class). &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-JxlPKjv9jIQ/Ti1ZYqf6qQI/AAAAAAAABOY/e1b6dL9V0Ag/s1600-h/image%25255B7%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-RMyZcpUPq1M/Ti1ZZPnSGOI/AAAAAAAABOc/97iyZ2pJ2ug/image_thumb%25255B3%25255D.png?imgmax=800" width="424" height="149" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The last step consists of defining the connection to the database within the web.config or app.config files. Note that EF will search for the connection string that has the same name as the class that was inherited from the DbContext class. You may however define a different name (&amp;quot;CompanyContext&amp;quot; in our example). &lt;/li&gt;
&lt;/ul&gt;&lt;a href="http://lh6.ggpht.com/-qDJEqempFrI/Ti1ZZVx7RwI/AAAAAAAABOg/pwKBDeoKl8Y/s1600-h/image%25255B11%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-pAG_Q9nnES4/Ti1ZZ0_6xbI/AAAAAAAABOk/-RNlJNQ7ZX4/image_thumb%25255B5%25255D.png?imgmax=800" width="424" height="190" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-2499786924780543319?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=79eJKR1fO1I:UgCMf6lnLNY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=79eJKR1fO1I:UgCMf6lnLNY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=79eJKR1fO1I:UgCMf6lnLNY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=79eJKR1fO1I:UgCMf6lnLNY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=79eJKR1fO1I:UgCMf6lnLNY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=79eJKR1fO1I:UgCMf6lnLNY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=79eJKR1fO1I:UgCMf6lnLNY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=79eJKR1fO1I:UgCMf6lnLNY:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/79eJKR1fO1I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/2499786924780543319/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=2499786924780543319&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/2499786924780543319?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/2499786924780543319?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/07/tutorial-code-first-with-entity.html" title="[Tutorial] Code First with Entity Framework 4.1 &lt;br&gt;Part1: Introduction to the Code First approach" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-kwt5VpDwYkk/Ti1ZXnv2bpI/AAAAAAAABOM/aSObverkxmw/s72-c/Fig1_ClassDiagram_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;DEUHQnw8cCp7ImA9WhdSEkU.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-7359615814249033989</id><published>2011-07-18T15:01:00.006+02:00</published><updated>2011-07-22T00:10:33.278+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-22T00:10:33.278+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial" /><category scheme="http://www.blogger.com/atom/ns#" term="Design Patterns" /><category scheme="http://www.blogger.com/atom/ns#" term="Architecture" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET 4.0" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Bridge" /><title>[Tutorial] Common Design Patterns in C# 4.0 Part8: Bridge Pattern</title><content type="html">&lt;p&gt;&lt;strong&gt;&lt;u&gt;Pattern Name:&lt;/u&gt;&lt;/strong&gt;     &lt;br /&gt;
Bridge Pattern&lt;/p&gt;&lt;strong&gt;&lt;u&gt;Short Description:&lt;/u&gt;&lt;/strong&gt;   &lt;br /&gt;
Separate implementation and object interfaces   &lt;p&gt;&lt;strong&gt;&lt;u&gt;Usage:&lt;/u&gt;&amp;#160; &lt;br /&gt;
&lt;/strong&gt;Sometimes used, useful to decouple an abstraction from its implementation and to be able to modify them independently. &lt;/p&gt;&lt;p&gt;Note that the Bridge pattern has nearly the same structure as the Adapter Pattern. But it is used when designing new systems instead of the Adapter pattern which is used in already existing systems.&lt;/p&gt;&lt;u&gt;&lt;strong&gt;Complexity:      &lt;br /&gt;
&lt;/strong&gt;&lt;/u&gt;1 / 5&lt;strong&gt; &lt;/strong&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;UML Class Diagram:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-qp_8nIfwRW8/TiQugfcr_RI/AAAAAAAABNA/ZYHG3CfH-Wo/s1600-h/image5.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-td96MU8LEHU/TiQug5MXGCI/AAAAAAAABNE/Z3-6fjwN42o/image_thumb3.png?imgmax=800" width="424" height="246" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Explanation:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The abstract Repository class defines the interface that all inheriting refined Repository classes will use for object management purposes. &lt;/li&gt;
&lt;li&gt;Note that the operations within the Repository classes define high-level operations.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-lbAwa8s6niE/TiQuhFYJhRI/AAAAAAAABNI/R9F8eAQEMsM/s1600-h/image9.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-29ZdBerxIzc/TiQuhhcfDHI/AAAAAAAABNM/jE1tI2QemFw/image_thumb5.png?imgmax=800" width="424" height="181" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;font face="Arial"&gt;The refined Repositories extend the basic functionalities and implement the execution code that uses the implementation classes. They should contain specializations which only apply to specific Repositories.&lt;/font&gt;&amp;#160;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-CTvVfEMsQQQ/TiQuiI0whGI/AAAAAAAABNQ/YBrrntn6yoU/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-7UQ_vgpAGrU/TiQuii23P6I/AAAAAAAABNU/tFy5X2eCEzs/image_thumb%25255B1%25255D.png?imgmax=800" width="424" height="638" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;font face="Arial"&gt;The abstract DataObject class defines the interfaces of the implementation classes. Note that the abstract Repository and the abstract DataObject classes can have completely different interfaces.&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;The concrete DataObject implementations contain the code that executes all the low-level operations.&lt;/li&gt;
&lt;li&gt;Note that the methods within the Repository class could also call multiple methods in the implementation classes (1 to * relationship).&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-FV-r3XmFesc/TiQui9et3qI/AAAAAAAABNY/M-hcV8JPNAw/s1600-h/image17.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-W8M3ugaWstg/TiQujggIlhI/AAAAAAAABNc/pqMSJSYHkek/image_thumb9.png?imgmax=800" width="354" height="138" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-2OdFH64MECU/TiQukPt76rI/AAAAAAAABNg/ZdFgE0Clg1c/s1600-h/image21.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-FBQ5JyRm6hM/TiQukv3re7I/AAAAAAAABNk/TWl3tnRnkWQ/image_thumb11.png?imgmax=800" width="424" height="580" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;In the last step we add some code to test the software design and the Bridge implementation. &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-Y9iODnmXzDQ/TiQuk9gy8ZI/AAAAAAAABNo/wIH7S7GzMmk/s1600-h/image36.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-OBXzQUPxW1I/TiQulZ0r3ZI/AAAAAAAABNs/yesBxM9XoDw/image_thumb17.png?imgmax=800" width="424" height="444" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;font face="Arial"&gt;When running the example you can see that everything is working as expected and that the correct classes are instantiated during runtime.&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;pre style="line-height: normal; font-family: ; background: white"&gt;&lt;a href="http://lh3.ggpht.com/-N74s4nAsAhI/TiQulqu48DI/AAAAAAAABNw/KUyGCbPb4tU/s1600-h/image32.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-QwQ1TUbM9c8/TiQumCr65rI/AAAAAAAABN0/F2bTlzT8IiM/image_thumb16.png?imgmax=800" width="354" height="232" /&gt;&lt;/a&gt;&lt;/pre&gt;&lt;strong&gt;&lt;u&gt;Source Code:&lt;/u&gt;&lt;br /&gt;
&lt;a title="http://csharpdesignpatterns.codeplex.com/" href="http://csharpdesignpatterns.codeplex.com/" target="_blank"&gt;http://csharpdesignpatterns.codeplex.com/&lt;/a&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-7359615814249033989?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=oYb5sJLIwD4:1KRzCGElADI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=oYb5sJLIwD4:1KRzCGElADI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=oYb5sJLIwD4:1KRzCGElADI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=oYb5sJLIwD4:1KRzCGElADI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=oYb5sJLIwD4:1KRzCGElADI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=oYb5sJLIwD4:1KRzCGElADI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=oYb5sJLIwD4:1KRzCGElADI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=oYb5sJLIwD4:1KRzCGElADI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/oYb5sJLIwD4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/7359615814249033989/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=7359615814249033989&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/7359615814249033989?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/7359615814249033989?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/07/tutorial-common-design-patterns-in-c-40_18.html" title="[Tutorial] Common Design Patterns in C# 4.0&lt;br&gt; Part8: Bridge Pattern" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-td96MU8LEHU/TiQug5MXGCI/AAAAAAAABNE/Z3-6fjwN42o/s72-c/image_thumb3.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEUFRnw4cCp7ImA9WhdSEkU.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-4172360637708160648</id><published>2011-07-01T14:24:00.003+02:00</published><updated>2011-07-22T00:10:17.238+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-22T00:10:17.238+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial" /><category scheme="http://www.blogger.com/atom/ns#" term="Adapter" /><category scheme="http://www.blogger.com/atom/ns#" term="Design Patterns" /><category scheme="http://www.blogger.com/atom/ns#" term="Architecture" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET 4.0" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>[Tutorial] Common Design Patterns in C# 4.0 Part7: Adapter Pattern</title><content type="html">&lt;p&gt;&lt;strong&gt;&lt;u&gt;Pattern Name:&lt;/u&gt;&lt;/strong&gt;&amp;#160; &lt;br /&gt;
Adapter Pattern&lt;/p&gt;&lt;strong&gt;&lt;u&gt;Short Description:&lt;/u&gt;&lt;/strong&gt;   &lt;br /&gt;
Match interfaces of classes with different interfaces   &lt;p&gt;&lt;strong&gt;&lt;u&gt;Usage:&lt;/u&gt;       &lt;br /&gt;
&lt;/strong&gt;Often used and easy to implement, useful if classes need to work together that have incompatible existing interfaces.&lt;/p&gt;&lt;u&gt;&lt;strong&gt;Complexity:&amp;#160; &lt;br /&gt;
&lt;/strong&gt;&lt;/u&gt;1 / 5&lt;strong&gt; &lt;/strong&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;UML Class Diagram:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-XsQyTJc39jg/Tg28X8nPOEI/AAAAAAAABLU/VVMX0lMLITU/s1600-h/image%25255B50%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-7wAqttRdwo4/Tg28Yas8CFI/AAAAAAAABLY/bVHgwYbPNNI/image_thumb%25255B24%25255D.png?imgmax=800" width="428" height="361" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Explanation:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The TradingDataImporter class acts as a client using classes with an existing Connector interface.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-DqCI06FB6PE/Tg28YxCp11I/AAAAAAAABLc/goeGU2U2mTw/s1600-h/image%25255B54%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-qAQDedSmiPE/Tg28ZfmyxJI/AAAAAAAABLg/ShFw7oizdCQ/image_thumb%25255B26%25255D.png?imgmax=800" width="424" height="160" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;font face="Arial"&gt;The abstract Adapter class defines the interface that the client class knows and that it can work with.&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;The concrete Adapter classes convert the interface of the incompatible classes into an interface the client expects. They make different existing interfaces work together.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-WgOz9NtxjYA/Tg28ZtJGa9I/AAAAAAAABLk/-YFjap7gXvo/s1600-h/image%25255B46%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-j4rrvh1vPRY/Tg28aQXVA9I/AAAAAAAABLo/ceu-kr45VcM/image_thumb%25255B22%25255D.png?imgmax=800" width="424" height="593" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Here are some examples of different adaptee classes that implement different interfaces. However, the client expects a generic interface that they currently don’t provide. That is why they get wrapped by the concrete adapter classes to make them compatible with the client. &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-AY_4JD10788/Tg28awBbFUI/AAAAAAAABLs/Zhcjd6JT26k/s1600-h/image%25255B26%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-FnvoJNmTva8/Tg28bUszwdI/AAAAAAAABLw/NTtpeFFEcnI/image_thumb%25255B12%25255D.png?imgmax=800" width="424" height="460" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;In the last step we add some code to test the software design and the Adapter implementation. &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-73zruaaR3to/Tg28b_9v6OI/AAAAAAAABL0/gQR5J9EFLng/s1600-h/image%25255B58%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-KTXNGjs466U/Tg28cZLsuGI/AAAAAAAABL4/Uxtx3gvd8CI/image_thumb%25255B28%25255D.png?imgmax=800" width="424" height="242" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;font face="Arial"&gt;When running the example you can see that everything is working as expected and that the correct classes are instantiated during runtime.&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;pre style="line-height: normal; font-family: ; background: white"&gt;&lt;a href="http://lh4.ggpht.com/-6llgWF2EBE8/Tg28cp90aVI/AAAAAAAABL8/gpWuunF7v90/s1600-h/image%25255B14%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-z3Atg-MVC4k/Tg28c66p11I/AAAAAAAABMA/zw-OqEokyz0/image_thumb%25255B6%25255D.png?imgmax=800" width="226" height="112" /&gt;&lt;/a&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Source Code: &lt;br /&gt;
&lt;br /&gt;
&lt;/u&gt;&lt;a title="http://csharpdesignpatterns.codeplex.com/" href="http://csharpdesignpatterns.codeplex.com/" target="_blank"&gt;http://csharpdesignpatterns.codeplex.com/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-4172360637708160648?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=IFdi9loxc3k:UNh9VugmWB4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=IFdi9loxc3k:UNh9VugmWB4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=IFdi9loxc3k:UNh9VugmWB4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=IFdi9loxc3k:UNh9VugmWB4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=IFdi9loxc3k:UNh9VugmWB4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=IFdi9loxc3k:UNh9VugmWB4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=IFdi9loxc3k:UNh9VugmWB4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=IFdi9loxc3k:UNh9VugmWB4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/IFdi9loxc3k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/4172360637708160648/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=4172360637708160648&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/4172360637708160648?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/4172360637708160648?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/07/tutorial-common-design-patterns-in-c-40.html" title="[Tutorial] Common Design Patterns in C# 4.0 &lt;br&gt;Part7: Adapter Pattern" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-7wAqttRdwo4/Tg28Yas8CFI/AAAAAAAABLY/bVHgwYbPNNI/s72-c/image_thumb%25255B24%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUIAQHo6fyp7ImA9WhZUFU8.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-3130581302209300419</id><published>2011-06-08T10:59:00.001+02:00</published><updated>2011-06-08T10:59:01.417+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-08T10:59:01.417+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET 4.0" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft Days" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>[MS Days 2011] Slides of Windows Azure Session Online</title><content type="html">&lt;p&gt;Below the slides that I used for my session during the MS Days in Grenoble. The session and slides were done in French.&lt;/p&gt; &lt;div style="width:425px" id="__ss_8237543"&gt; &lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/JasonDeOliveira/ms-days-2011-grenoble-dcouvrez-windows-azure" title="MS Days 2011- Windows Azure"&gt;MS Days 2011- Windows Azure&lt;/a&gt;&lt;/strong&gt; &lt;iframe src="http://www.slideshare.net/slideshow/embed_code/8237543" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;div style="padding:5px 0 12px"&gt; View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/JasonDeOliveira"&gt;JasonDeOliveira&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-3130581302209300419?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=4z5o2ypdDf8:IzMd5FAeuoM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=4z5o2ypdDf8:IzMd5FAeuoM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=4z5o2ypdDf8:IzMd5FAeuoM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=4z5o2ypdDf8:IzMd5FAeuoM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=4z5o2ypdDf8:IzMd5FAeuoM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=4z5o2ypdDf8:IzMd5FAeuoM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=4z5o2ypdDf8:IzMd5FAeuoM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=4z5o2ypdDf8:IzMd5FAeuoM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/4z5o2ypdDf8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/3130581302209300419/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=3130581302209300419&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/3130581302209300419?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/3130581302209300419?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/06/ms-days-2011-slides-of-windows-azure.html" title="[MS Days 2011] Slides of Windows Azure Session Online" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUUHRH8-fSp7ImA9WhZUEE0.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-8434364931037912927</id><published>2011-06-01T18:00:00.002+02:00</published><updated>2011-06-02T11:33:55.155+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-02T11:33:55.155+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Code First" /><category scheme="http://www.blogger.com/atom/ns#" term="Publication" /><category scheme="http://www.blogger.com/atom/ns#" term="Programmez" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Entity Framework" /><title>[Publication] Article in French Programmez Magazine on Entity Framework 4.1 and CodeFirst</title><content type="html">&lt;p&gt;You can find an article of 5 pages concerning Entity Framework 4.1 and CodeFirst in the French Programmez magazine No.142 written by me and &lt;a href="http://blogs.codes-sources.com/fathi/default.aspx" target="_blank"&gt;Fathi Bellahcene&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.programmez.com/magazine.php?num_magazine=142" target="_blank"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-OKUfy9oLv70/TeZiN-5_3bI/AAAAAAAABLA/6jpBK5eU2no/image%25255B3%25255D.png?imgmax=800" width="181" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.programmez.com/vignettes.php?num_magazine=142&amp;amp;page=66" target="_blank"&gt;First Page and Second Page (low resolution)&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.programmez.com/vignettes.php?num_magazine=142&amp;amp;page=68" target="_blank"&gt;Third Page and Fourth Page (low resolution)&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.programmez.com/vignettes.php?num_magazine=142&amp;amp;page=70" target="_blank"&gt;Fifth Page (low resolution)&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The article is written in French but as always I will write some English articles on my Blog in the next weeks. So stay tuned if you are interested in getting to know the new features of Entity Framework 4.1 and the CodeFirst approach.&lt;/p&gt;&lt;p&gt;You can find the source code here:   &lt;br /&gt;
&lt;a href="http://codefirst.codeplex.com" target="_blank"&gt;http://codefirst.codeplex.com&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-8434364931037912927?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=mk3SRku5gAM:vmuM3xWUNek:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=mk3SRku5gAM:vmuM3xWUNek:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=mk3SRku5gAM:vmuM3xWUNek:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=mk3SRku5gAM:vmuM3xWUNek:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=mk3SRku5gAM:vmuM3xWUNek:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=mk3SRku5gAM:vmuM3xWUNek:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=mk3SRku5gAM:vmuM3xWUNek:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=mk3SRku5gAM:vmuM3xWUNek:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/mk3SRku5gAM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/8434364931037912927/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=8434364931037912927&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/8434364931037912927?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/8434364931037912927?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/06/publication-article-in-french.html" title="[Publication] Article in French Programmez Magazine on Entity Framework 4.1 and CodeFirst" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-OKUfy9oLv70/TeZiN-5_3bI/AAAAAAAABLA/6jpBK5eU2no/s72-c/image%25255B3%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEYNQHo7fCp7ImA9WhdSEkU.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-1259552987153419533</id><published>2011-06-01T06:20:00.002+02:00</published><updated>2011-07-22T00:09:51.404+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-22T00:09:51.404+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial" /><category scheme="http://www.blogger.com/atom/ns#" term="Design Patterns" /><category scheme="http://www.blogger.com/atom/ns#" term="Architecture" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET 4.0" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Singleton" /><title>[Tutorial] Common Design Patterns in C# 4.0 Part6: Singleton Pattern</title><content type="html">&lt;p&gt;&lt;strong&gt;&lt;u&gt;Pattern Name:&lt;/u&gt;&lt;/strong&gt;     &lt;br /&gt;
Singleton Pattern&lt;/p&gt;&lt;strong&gt;&lt;u&gt;Short Description:&lt;/u&gt;&lt;/strong&gt;   &lt;br /&gt;
Class with only one single possible instance   &lt;p&gt;&lt;strong&gt;&lt;u&gt;Usage:&lt;/u&gt;&amp;#160; &lt;br /&gt;
&lt;/strong&gt;Often used for objects that need to provide global access with the constraint of only one single instance in the application&lt;/p&gt;&lt;u&gt;&lt;strong&gt;Complexity:      &lt;br /&gt;
&lt;/strong&gt;&lt;/u&gt;1 / 5   &lt;p&gt;&lt;strong&gt;&lt;u&gt;UML Class Diagram:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-_9XA1aXhHV0/Td4KCa4Db9I/AAAAAAAABKQ/ChCzcGS3uaM/s1600-h/image4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-wOYhhT-JvBw/Td4KCmpwlBI/AAAAAAAABKU/Flom6SQXywQ/image_thumb2.png?imgmax=800" width="424" height="352" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Explanation:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;There are multiple ways of implementing the Singleton Pattern in C#. I am going to explain the most efficient approaches that also provide thread safety. &lt;/li&gt;
&lt;li&gt;Note that in the first example the default constructor is defined as private so that it is not possible to instantiate the object from the outside. The class is also marked as sealed which means that inheritance is not allowed for it. &lt;/li&gt;
&lt;li&gt;The internally instantiated object is stored in a private variable that is marked as static. The public static property GetInstance is used to allow access to this object. It contains the business logic that assures that only a single instance can ever exist. &lt;/li&gt;
&lt;li&gt;To achieve this behavior a lock strategy is used to assure that only a single thread is allowed to do the null check and create a new instance if it does not already exist. &lt;/li&gt;
&lt;li&gt;A test function DisplayConfiguration() was added to be able to verify the class design. &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-E6E71bfX77o/TeE5q42rk3I/AAAAAAAABKw/Bucv8jeL4os/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-FYtYWLBEyvU/TeE5rWiC3xI/AAAAAAAABK0/_wyB9o8rSyw/image_thumb%25255B2%25255D.png?imgmax=800" width="424" height="521" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Note that in the second example the default constructor is also defined as private so that it is not possible to instantiate the object from the outside. The class is also marked as sealed which means that inheritance is not allowed for it. &lt;/li&gt;
&lt;li&gt;This time a private nested class is used to provide access to the instance that must only exist once in the application. &lt;/li&gt;
&lt;li&gt;This nested class has a static default constructor and an internal static read-only instance of the object. Only the container class has access to the instance which will due to the software design (auto-instantiated and marked as read-only) only exist once. &lt;/li&gt;
&lt;li&gt;A test function DisplayRules() was added to be able to verify the class design. &lt;/li&gt;
&lt;li&gt;I recommend using this example as your default approach for your Singleton implementations since there is no locking in it which makes it more efficient in terms of performance. &lt;!--EndFragment--&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-5wKjAsE9D90/Td4KDpy46tI/AAAAAAAABKg/VpGvnkkQSjI/s1600-h/image14.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-H_iyYyq9gG4/Td4KDwSrqjI/AAAAAAAABKk/IGpl-BpeGyA/image_thumb61.png?imgmax=800" width="424" height="496" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;In the last step we add some code to test the software design and the Singleton implementation. &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-a4XML3g5MQA/TeE5rv0cUmI/AAAAAAAABK4/Ck1m6G2ZuW8/s1600-h/image%25255B8%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-Red86Pff78o/TeE5sj8A--I/AAAAAAAABK8/uiVdhQp8M8M/image_thumb%25255B4%25255D.png?imgmax=800" width="424" height="165" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;font face="Arial"&gt;When running the example you can see that everything is working as expected (it is however not as simple to test that there really is just one single instance, you just have to believe in the correct software design).&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;pre style="line-height: normal; font-family: ; background: white"&gt;&lt;a href="http://lh3.ggpht.com/-yB_BbDsfpTo/Td4KECLMd3I/AAAAAAAABKo/VAGs-EOug4k/s1600-h/image2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-sURTkECmfCs/Td4KEinxCyI/AAAAAAAABKs/cyR4ucxTQP4/image_thumb.png?imgmax=800" width="244" height="103" /&gt;&lt;/a&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Source Code: &lt;br /&gt;
&lt;br /&gt;
&lt;/u&gt;&lt;a title="http://csharpdesignpatterns.codeplex.com/" href="http://csharpdesignpatterns.codeplex.com/" target="_blank"&gt;http://csharpdesignpatterns.codeplex.com/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-1259552987153419533?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=yhgnAxtaj8k:dT26NfRqe2I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=yhgnAxtaj8k:dT26NfRqe2I:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=yhgnAxtaj8k:dT26NfRqe2I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=yhgnAxtaj8k:dT26NfRqe2I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=yhgnAxtaj8k:dT26NfRqe2I:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=yhgnAxtaj8k:dT26NfRqe2I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=yhgnAxtaj8k:dT26NfRqe2I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=yhgnAxtaj8k:dT26NfRqe2I:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/yhgnAxtaj8k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/1259552987153419533/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=1259552987153419533&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/1259552987153419533?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/1259552987153419533?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/06/tutorial-common-design-patterns-in-c-40.html" title="[Tutorial] Common Design Patterns in C# 4.0 &lt;br&gt;Part6: Singleton Pattern" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-wOYhhT-JvBw/Td4KCmpwlBI/AAAAAAAABKU/Flom6SQXywQ/s72-c/image_thumb2.png?imgmax=800" height="72" width="72" /><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;CUUHQ3Y_eyp7ImA9WhZWFk8.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-1023745265455110074</id><published>2011-05-17T11:01:00.003+02:00</published><updated>2011-05-17T11:07:12.843+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-17T11:07:12.843+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Language" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>[C# and Language] Compiler as a Service (CaaS)</title><content type="html">&lt;p&gt;Lately I showed you the new async features of the next version of C# 5.0, which are already quite compelling. But Microsoft is already working on the language features that will come after the next version. These features are called Compiler as a Service (CaaS).&lt;/p&gt;&lt;p&gt;Everything is still in very early stage so I cannot give you any exact information, but I may give you the concepts and ideas behind it. &lt;/p&gt;&lt;p&gt;It will be possible to evaluate expressions at runtime and to inject them into your code. This allows for very interesting scenarios where parts of your business logic and business rules may be stored outside of your code (in the DB or in XML file for example) and be modified an extended independently.&lt;/p&gt;&lt;p&gt;An example could be:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_tBdbk_GzSJ4/TdI5UOM71aI/AAAAAAAABKE/_TKwV3JAU0k/s1600-h/image%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_tBdbk_GzSJ4/TdI5Uj90ioI/AAAAAAAABKI/yWL_HcyZBTM/image_thumb%5B1%5D.png?imgmax=800" width="424" height="70" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Other use cases consists of having the possibility to translate from one language into another very easily from within Visual Studio. You could for example select code parts in C# and choose F# as the language to translate to. The CaaS feature would then scan the C# code and generate the corresponding F#&amp;#160; code.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-1023745265455110074?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=WH7YRSzlCSY:6ogtVCLD7F8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=WH7YRSzlCSY:6ogtVCLD7F8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=WH7YRSzlCSY:6ogtVCLD7F8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=WH7YRSzlCSY:6ogtVCLD7F8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=WH7YRSzlCSY:6ogtVCLD7F8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=WH7YRSzlCSY:6ogtVCLD7F8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=WH7YRSzlCSY:6ogtVCLD7F8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=WH7YRSzlCSY:6ogtVCLD7F8:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/WH7YRSzlCSY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/1023745265455110074/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=1023745265455110074&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/1023745265455110074?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/1023745265455110074?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/05/language-c-compiler-as-service-caas.html" title="[C# and Language] Compiler as a Service (CaaS)" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_tBdbk_GzSJ4/TdI5Uj90ioI/AAAAAAAABKI/yWL_HcyZBTM/s72-c/image_thumb%5B1%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEENQnk4eip7ImA9WhZUEE0.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-2344852193081759000</id><published>2011-05-08T01:26:00.002+02:00</published><updated>2011-06-02T11:24:53.732+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-02T11:24:53.732+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft Days" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="Information" /><title>[MS Days 2011] Speaker at Microsoft Days 2011 in Grenoble Session on Windows Azure</title><content type="html">&lt;p&gt;I am going to be speaker and animate a session with &lt;a href="http://blogs.codes-sources.com/fathi" target="_blank"&gt;Fathi Bellahcene&lt;/a&gt; on Windows Azure during the Microsoft Days 2011 in Grenoble the 7th June ! So if you have the time and if you are around don’t hesitate and come to see us in action !&lt;/p&gt;&lt;p&gt;&lt;a href="http://bit.ly/lXgPE7" target="_blank"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_tBdbk_GzSJ4/TcXTcd2uV5I/AAAAAAAABJs/gik38xwAz98/image%5B9%5D.png?imgmax=800" width="424" height="123" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-2344852193081759000?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=yQrsQEApMLg:cKDxCNTEg9g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=yQrsQEApMLg:cKDxCNTEg9g:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=yQrsQEApMLg:cKDxCNTEg9g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=yQrsQEApMLg:cKDxCNTEg9g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=yQrsQEApMLg:cKDxCNTEg9g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=yQrsQEApMLg:cKDxCNTEg9g:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=yQrsQEApMLg:cKDxCNTEg9g:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=yQrsQEApMLg:cKDxCNTEg9g:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/yQrsQEApMLg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/2344852193081759000/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=2344852193081759000&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/2344852193081759000?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/2344852193081759000?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/05/ms-days-2011-speaker-at-microsoft-days.html" title="[MS Days 2011] Speaker at Microsoft Days 2011 in Grenoble &lt;br&gt;Session on Windows Azure" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_tBdbk_GzSJ4/TcXTcd2uV5I/AAAAAAAABJs/gik38xwAz98/s72-c/image%5B9%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEYDRXY8fSp7ImA9WhdSEkU.&quot;"><id>tag:blogger.com,1999:blog-4388210448295499283.post-6129665264880150024</id><published>2011-05-07T19:23:00.004+02:00</published><updated>2011-07-22T00:09:34.875+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-22T00:09:34.875+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Tutorial" /><category scheme="http://www.blogger.com/atom/ns#" term="Design Patterns" /><category scheme="http://www.blogger.com/atom/ns#" term="Architecture" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET 4.0" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Prototype" /><title>[Tutorial] Common Design Patterns in C# 4.0 Part5: Prototype Pattern</title><content type="html">&lt;p&gt;&lt;strong&gt;&lt;u&gt;Pattern Name:&lt;/u&gt;&lt;/strong&gt;     &lt;br /&gt;
Prototype Pattern&lt;/p&gt;&lt;strong&gt;&lt;u&gt;Short Description:&lt;/u&gt;&lt;/strong&gt;   &lt;br /&gt;
Clone or copy initialized instances   &lt;p&gt;&lt;strong&gt;&lt;u&gt;Usage:&lt;/u&gt;&amp;#160; &lt;br /&gt;
&lt;/strong&gt;Easy pattern, usage depends on the preferred software design, provides an alternative to the other creational patterns that are mainly based on external classes for creation&lt;/p&gt;&lt;u&gt;&lt;strong&gt;Complexity:      &lt;br /&gt;
&lt;/strong&gt;&lt;/u&gt;1 / 5&lt;strong&gt; &lt;/strong&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;UML Class Diagram:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_tBdbk_GzSJ4/TcWAF1yOOdI/AAAAAAAABI0/KX-Gl4nPvlY/s1600-h/image21.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_tBdbk_GzSJ4/TcWAGJipVyI/AAAAAAAABI4/J1QaMztme7U/image_thumb11.png?imgmax=800" width="424" height="263" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Explanation:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The abstract prototype class defines the interface that contains a clone method for cloning itself. &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_tBdbk_GzSJ4/TcWAGpJc2kI/AAAAAAAABI8/dxwPHUVAOqQ/s1600-h/image32.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_tBdbk_GzSJ4/TcWAHkumtzI/AAAAAAAABJA/puERbO_3JYg/image_thumb18.png?imgmax=800" width="354" height="205" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;font face="Arial"&gt;The inherited classes implement the clone function&lt;/font&gt;&lt;font face="Arial"&gt;. Note that C# provides two different ways of cloning an object: by shallow copy (only top level objects) or by deep copy (all objects).&lt;/font&gt;&amp;#160;&lt;/li&gt;
&lt;li&gt;You could also manually create a new object and set its values with the values of the original object but since C# already implements everything necessary I advise using that.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_tBdbk_GzSJ4/TcWAII60L8I/AAAAAAAABJE/sHFOCGLut84/s1600-h/image%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_tBdbk_GzSJ4/TcWAIfcXNiI/AAAAAAAABJI/pd8FsTBWlVs/image_thumb%5B1%5D.png?imgmax=800" width="424" height="549" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;font face="Arial"&gt;The client class does not create new objects itself. Instead it asks the objects to clone themselves when needed. The cloned objects are perfect copies and contain all values of the original objects depending &lt;/font&gt;on the shallow or deep copy approach (see above). &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_tBdbk_GzSJ4/TcWAJKPe7zI/AAAAAAAABJM/p7ko3is5ZDY/s1600-h/image%5B7%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_tBdbk_GzSJ4/TcWAJZndVHI/AAAAAAAABJQ/HKu4wM-sTe4/image_thumb%5B3%5D.png?imgmax=800" width="424" height="223" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;You may also use the ICloneable interface that already exists in C#&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_tBdbk_GzSJ4/TcWFoINRslI/AAAAAAAABJk/WLpmsqWIqxw/s1600-h/image%5B4%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_tBdbk_GzSJ4/TcWFosK5dKI/AAAAAAAABJo/pQil4PtDlG0/image_thumb%5B1%5D.png?imgmax=800" width="424" height="289" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;In the last step we add some code to test the software design and the Prototype implementation. &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_tBdbk_GzSJ4/TcWAJ5OanjI/AAAAAAAABJU/PhBnJ7_S-4U/s1600-h/image%5B11%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_tBdbk_GzSJ4/TcWAKdWuisI/AAAAAAAABJY/aBTDOS5Pbko/image_thumb%5B5%5D.png?imgmax=800" width="424" height="424" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;font face="Arial"&gt;When running the example you can see that everything is working as expected and that the correct classes are instantiated during runtime.&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_tBdbk_GzSJ4/TcWAKoc2ZWI/AAAAAAAABJc/Ij33ldwjgpk/s1600-h/image31.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_tBdbk_GzSJ4/TcWALHsS6xI/AAAAAAAABJg/fGUpbP1yNyw/image_thumb17.png?imgmax=800" width="304" height="114" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;Source Code:        &lt;br /&gt;
&lt;/u&gt;&lt;a title="http://csharpdesignpatterns.codeplex.com/" href="http://csharpdesignpatterns.codeplex.com/" target="_blank"&gt;http://csharpdesignpatterns.codeplex.com/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4388210448295499283-6129665264880150024?l=www.jasondeoliveira.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=fJJSXlPpy2c:oOPiJHaQTeA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=fJJSXlPpy2c:oOPiJHaQTeA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=fJJSXlPpy2c:oOPiJHaQTeA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=fJJSXlPpy2c:oOPiJHaQTeA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=fJJSXlPpy2c:oOPiJHaQTeA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=fJJSXlPpy2c:oOPiJHaQTeA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?i=fJJSXlPpy2c:oOPiJHaQTeA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DotNetArchitecture?a=fJJSXlPpy2c:oOPiJHaQTeA:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DotNetArchitecture?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DotNetArchitecture/~4/fJJSXlPpy2c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.jasondeoliveira.com/feeds/6129665264880150024/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4388210448295499283&amp;postID=6129665264880150024&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/6129665264880150024?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4388210448295499283/posts/default/6129665264880150024?v=2" /><link rel="alternate" type="text/html" href="http://www.jasondeoliveira.com/2011/05/tutorial-common-design-patterns-in-c-40_07.html" title="[Tutorial] Common Design Patterns in C# 4.0 &lt;br&gt;Part5: Prototype Pattern" /><author><name>Jason De Oliveira</name><uri>http://www.blogger.com/profile/00420864903139404668</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://3.bp.blogspot.com/_tBdbk_GzSJ4/TKdkWfuUqNI/AAAAAAAAA7c/LgNDVhysytg/S220/jason.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_tBdbk_GzSJ4/TcWAGJipVyI/AAAAAAAABI4/J1QaMztme7U/s72-c/image_thumb11.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry></feed>

