<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Graphic Stream : ADO.NET Entity Framework</title><link>http://msmvps.com/blogs/valentin/archive/tags/ADO.NET+Entity+Framework/default.aspx</link><description>Tags: ADO.NET Entity Framework</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>ADO.NET Entity Framework Tutorial 2 : Installation et Configuration de l'environnement</title><link>http://msmvps.com/blogs/valentin/archive/2008/08/30/ado-net-entity-framework-tutorial-2-installation-et-configuration-de-l-environnement.aspx</link><pubDate>Sat, 30 Aug 2008 15:54:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1646283</guid><dc:creator>valentin</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1646283</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2008/08/30/ado-net-entity-framework-tutorial-2-installation-et-configuration-de-l-environnement.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://msmvps.com/blogs/valentin/archive/2008/08/30/ado-net-entity-framework-sommaire-des-cours.aspx"&gt;&lt;img width="24" src="http://msmvps.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin/sommaire.png" height="24" style="vertical-align:middle;" alt="" /&gt;&lt;span style="font-size:small;font-family:Calibri;background-color:#ffff00;"&gt;Revenir au sommaire&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La configuration de votre environement de d&amp;eacute;veloppement pour l&amp;#39;utilisation du framework Entity est plut&amp;ocirc;t simple.&lt;/p&gt;
&lt;p&gt;L&amp;#39;entity framework ne fonctionne qu&amp;#39;avec un Visual Studio 2008 (2005 ne supporte pas ce framework).&lt;/p&gt;
&lt;p&gt;Il est n&amp;eacute;cessaire de disposer du SP1. S&amp;#39;il est d&amp;eacute;j&amp;agrave; install&amp;eacute;. Vous pouvez sauter cette &amp;eacute;tape et commencer votre apprentissage. Dans le cas contraire t&amp;eacute;l&amp;eacute;chargez l&amp;#39;ISO ou l&amp;#39;exe du sp1 aux adresses&amp;nbsp;suivantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=8&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3d27673c47-b3b5-4c67-bd99-84e525b5ce61%26DisplayLang%3den"&gt;Visual Studio 2008 Service Pack 1 (ISO)&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=10&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3dfbee1648-7106-44a7-9649-6d9f6d58056e%26DisplayLang%3den"&gt;Visual Studio 2008 Service Pack 1 (exe)&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si vous avez pr&amp;eacute;c&amp;eacute;demment install&amp;eacute; la b&amp;eacute;ta du SP1 il existe un outil de nettoyage pour votre environement qui supprimera toute r&amp;eacute;f&amp;eacute;rence vers cette version afin de pouvoir installer le SP1 en totu s&amp;eacute;curit&amp;eacute;. Il est accessible ici : &lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=8&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3da494b0e0-eb07-4ff1-a21c-a4663e456d9d%26DisplayLang%3den"&gt;VS 2008 Service Pack Preparation Tool&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A noter encore, pour les d&amp;eacute;veloppeurs de Silverlight 2b2 qu&amp;#39;il est n&amp;eacute;cessaire d&amp;#39;effectuer une reinstallation des Silverlight Tools Beta 2 pour visual studio avec un version updagr&amp;eacute;e accessible ici : &lt;a href="http://go.microsoft.com/fwlink/?LinkID=120032"&gt;Silverlight Tools Beta 2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Terminons enfin en ajoutant qu&amp;#39;il existe un installeur sp&amp;eacute;cifiquement d&amp;eacute;di&amp;eacute; au framework pour les serveur &amp;agrave; cette adresse : &lt;a href="http://www.microsoft.com/downloads/info.aspx?na=22&amp;amp;p=3&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=&amp;amp;u=%2fdownloads%2fdetails.aspx%3fFamilyID%3dab99342f-5d1a-413d-8319-81da479ab0d7%26DisplayLang%3den"&gt;.NET Framework 3.5 Service pack 1&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Valentin Billotte&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/blogs/valentin/archive/2008/08/30/ado-net-entity-framework-sommaire-des-cours.aspx"&gt;&lt;img width="24" src="http://msmvps.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin/sommaire.png" height="24" style="vertical-align:middle;" alt="" /&gt;&lt;span style="font-size:small;font-family:Calibri;background-color:#ffff00;"&gt;Revenir au sommaire&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1646283" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/ADO.NET+Entity+Framework/default.aspx">ADO.NET Entity Framework</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Service+Pack+1/default.aspx">Service Pack 1</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/configuration/default.aspx">configuration</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Installation/default.aspx">Installation</category></item><item><title>Incompatibilité entre Silverlight 2b2 et Ado.Net Data Services  avec le framework 3.5 SP1</title><link>http://msmvps.com/blogs/valentin/archive/2008/08/24/incompatibilit-233-entre-silverlight-2b2-et-ado-net-data-services-avec-le-framework-3-5-sp1.aspx</link><pubDate>Sun, 24 Aug 2008 15:12:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1645668</guid><dc:creator>valentin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1645668</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2008/08/24/incompatibilit-233-entre-silverlight-2b2-et-ado-net-data-services-avec-le-framework-3-5-sp1.aspx#comments</comments><description>&lt;p&gt;L&amp;#39;installation du SP1 (VS 2008 SP1 et/ou framework 3.5 sp1) emp&amp;ecirc;che les d&amp;eacute;veloppements Software + Services entre Silverlight et ADO.Net Data services (Astoria). Deux bugs apparaissent :&lt;/p&gt;
&lt;p align="left" style="padding-left:60px;"&gt;&lt;span style="text-decoration:underline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dans le cas o&amp;ugrave; le Xap Silverlight se trouve sur le m&amp;ecirc;me domaine que les services Astoria vous optenez l&amp;#39;erreur suivante :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="font-size:xx-small;"&gt;&amp;quot;Aucun constructeur sans param&amp;egrave;tre d&amp;eacute;fini pour cet objet.&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="font-size:xx-small;"&gt;&amp;nbsp;{System.MissingMethodException: Aucun constructeur sans param&amp;egrave;tre d&amp;eacute;fini pour cet objet.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;agrave; System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean&amp;amp; canBeCached, RuntimeMethodHandle&amp;amp; ctor, Boolean&amp;amp; bNeedSecurityCheck)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;agrave; System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;agrave; System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)&lt;br /&gt;...&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="font-size:xx-small;"&gt;&lt;/span&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:xx-small;"&gt;&lt;/span&gt;&lt;strong&gt;&amp;nbsp;Dans le cas o&amp;ugrave; Silverlight se trouve sur un autre domaine une autre erreur apparait sur l&amp;#39;appel &amp;agrave; &lt;span style="font-size:x-small;"&gt;EndExecute&lt;/span&gt;&lt;span style="font-size:xx-small;"&gt; apr&amp;egrave;s une requ&amp;ecirc;te Linq to Data services. :&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;System.InvalidOperationException occurred&lt;br /&gt;&amp;nbsp; Message=&amp;quot;Failed to Invoke: callOpen.&amp;quot;&lt;br /&gt;&amp;nbsp; StackTrace:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Windows.Browser.ScriptObject.Invoke(String name, Object[] args)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Data.Services.Http.ScriptObjectUtility.CallOpen(ScriptObject request, String method, String uri)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Data.Services.Http.HttpWebRequest.ScriptXmlHttpRequest.Open(Boolean async, String url, String method, Action OnReadyStateChange)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Data.Services.Http.HttpWebRequest.InvokeRequest(Boolean async)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;La r&amp;eacute;ponse de Pablo Castro &amp;agrave; ce soucis est sans &amp;eacute;quivoque :&lt;/p&gt;
&lt;p align="left"&gt;&amp;quot;Unfortunately, due to work arounds required for other aspects of Data Services functionality, cross-domain access is not supported in the Data Services client included in Silverlight Beta 2. We&amp;#39;re working to sort out the issue for the RTM release.&amp;quot;&lt;/p&gt;
&lt;p align="left" style="padding-left:60px;"&gt;&lt;span style="text-decoration:underline;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p align="left"&gt;En gros il faudra attendre la sortie de la rtm de Silverlight pour voir ces deux probl&amp;egrave;mes corrig&amp;eacute;s (pr&amp;eacute;vu pour la fin de l&amp;#39;&amp;eacute;t&amp;eacute;, soit ... bient&amp;ocirc;t). D&amp;#39;ici l&amp;agrave; les &amp;eacute;quipes travaillant sur ces produits se contenteront d&amp;#39;un d&amp;eacute;veloppement MVC en ne travaillant que sur la vue cot&amp;eacute; software et que sur les fonctionnalit&amp;eacute;s m&amp;eacute;tier cot&amp;eacute; services... en attendant de pouvoir relier le tout.&lt;/p&gt;
&lt;p&gt;Plus d&amp;#39;infos sur :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/astoriateam/archive/2008/08/12/compat-note-silverlight-beta-2-client-net-framework-3-5-sp1-server-components.aspx"&gt;http://blogs.msdn.com/astoriateam/archive/2008/08/12/compat-note-silverlight-beta-2-client-net-framework-3-5-sp1-server-components.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;(c&amp;#39;est quand m&amp;ecirc;me fou de voir de tels oublis/lacunes sur deux produits aussi li&amp;eacute;s ...)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1645668" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/ADO.NET+Entity+Framework/default.aspx">ADO.NET Entity Framework</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Error/default.aspx">Error</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Ado.Net+Data+Services/default.aspx">Ado.Net Data Services</category></item><item><title>ADO.NET Entity Framework</title><link>http://msmvps.com/blogs/valentin/archive/2008/08/20/ado-net-entity-framework.aspx</link><pubDate>Wed, 20 Aug 2008 12:55:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1645343</guid><dc:creator>valentin</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/valentin/rsscomments.aspx?PostID=1645343</wfw:commentRss><comments>http://msmvps.com/blogs/valentin/archive/2008/08/20/ado-net-entity-framework.aspx#comments</comments><description>&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;background-color:#ffff00;"&gt;&lt;a href="http://msmvps.com/blogs/valentin/archive/2008/08/30/ado-net-entity-framework-sommaire-des-cours.aspx"&gt;&lt;img width="24" src="http://msmvps.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin/sommaire.png" height="24" style="vertical-align:middle;" alt="" /&gt;Revenir au sommaire&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Le Framework Entity de Microsoft&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;est une technologie int&amp;eacute;gr&amp;eacute;e &amp;agrave; ADO.Net qui aide au d&amp;eacute;veloppement d&amp;rsquo;application sp&amp;eacute;cialis&amp;eacute;es dans la manipulation de donn&amp;eacute;es. Les architectes et les d&amp;eacute;veloppeurs doivent &amp;agrave; la fois mod&amp;eacute;liser le besoin m&amp;eacute;tier sur laquelle porte la probl&amp;eacute;matique de ces applications, sous la forme d&amp;rsquo;entit&amp;eacute;s, de relations, d&amp;rsquo;int&amp;eacute;grit&amp;eacute; et respecter les contraintes li&amp;eacute;s au stockage de ces donn&amp;eacute;es pour les manipuler.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Le framework Entity vise &amp;agrave; permettre aux&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;d&amp;eacute;veloppeurs de travailler sur des objets m&amp;eacute;tiers proches de la conceptualisation s&amp;eacute;mantique que la maitrise d&amp;rsquo;&amp;oelig;uvre peut en faire en l&amp;rsquo;&amp;eacute;loignant des sp&amp;eacute;cificit&amp;eacute;s techniques li&amp;eacute;es &amp;agrave; leur stockage. Pour permettre &amp;ccedil;a le Framework Entity propose une couche d&amp;rsquo;abstraction mall&amp;eacute;able &amp;agrave; souhait entre la couche de stockage et la couche m&amp;eacute;tier. Il &amp;eacute;vite en outre toutes les t&amp;acirc;ches fastidieuses et sensibles li&amp;eacute;es &amp;agrave; la manipulation et aux &amp;eacute;changes de donn&amp;eacute;es.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Le MCD au c&amp;oelig;ur du d&amp;eacute;veloppement&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Le mod&amp;egrave;le de donn&amp;eacute;es d&amp;rsquo;une application peut &amp;ecirc;tre divis&amp;eacute; en trois parties bien distinctes :&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Le mod&amp;egrave;le conceptuel (MCD). &lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Le mod&amp;egrave;le logique.&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Le&amp;nbsp;mod&amp;egrave;le physique. &lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Le mod&amp;egrave;le physique n&amp;rsquo;int&amp;eacute;resse en rien le d&amp;eacute;veloppeur. C&amp;rsquo;est le domaine r&amp;eacute;serv&amp;eacute; de l&amp;rsquo;administration de la base. Il vise l&amp;rsquo;&amp;eacute;tude des besoins de donn&amp;eacute;es et la r&amp;eacute;ponse ad&amp;eacute;quat &amp;agrave; ces besoins sous la formes d&amp;rsquo;indexes, de partitions afin d&amp;rsquo;am&amp;eacute;liorer les performances dans la manipulation des donn&amp;eacute;es. &lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Le mod&amp;egrave;le conceptuel d&amp;eacute;finit les entit&amp;eacute;s et leurs relations. Enfin le mod&amp;egrave;le logique (dans le cas d&amp;rsquo;une base relationnelle) normalise entit&amp;eacute;s et relations sous la forme de tables, de cl&amp;eacute;s &amp;eacute;trang&amp;egrave;res et de contraintes.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;En caricaturant&amp;nbsp;un peu&amp;nbsp;on peut alors dire que :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Le mod&amp;egrave;le physique ne concerne que les administrateurs de la base.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Le mod&amp;egrave;le logique ne concerne que les d&amp;eacute;veloppeurs. Leurs interractions avec ce mod&amp;egrave;le se limitant g&amp;eacute;n&amp;eacute;ralement &amp;agrave; des requ&amp;ecirc;tes sql et des appels &amp;agrave; des proc&amp;eacute;dures stock&amp;eacute;es.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Le mod&amp;egrave;le conceptuel enfin est le domaine de la maitrise d&amp;rsquo;ouvrage qui conceptualise le besoin m&amp;eacute;tier.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;On peut d&amp;eacute;finir alors une loi &amp;quot;math&amp;eacute;matiquo-informatique&amp;quot; bien connue&amp;nbsp;: &lt;em&gt;&amp;laquo;&amp;nbsp;plus le d&amp;eacute;veloppeur s&amp;rsquo;&amp;eacute;loigne du mod&amp;egrave;le conceptuel avec un mod&amp;egrave;le logique compliqu&amp;eacute;, plus le temps de d&amp;eacute;veloppement et le besoin de maintenance est important&amp;nbsp;&amp;raquo;.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;La manipulation de donn&amp;eacute;es par un mod&amp;egrave;le de programmation orient&amp;eacute; objet pose d&amp;rsquo;un r&amp;eacute;el probl&amp;egrave;me dans l&amp;rsquo;interaction avec le syst&amp;egrave;me de stockage de donn&amp;eacute;es. G&amp;eacute;n&amp;eacute;ralement, dans le cas de base de donn&amp;eacute;es relationnelle,&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;on associe &amp;agrave; une classe m&amp;eacute;tier (par exemple Customers) une table avec le m&amp;ecirc;me nom dans la base. Mais la symbiose n&amp;rsquo;est pas forcement parfaite. Il arrive ainsi que plusieurs&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;tables dans la base correspondent &amp;agrave; une seule classe (et inversement).&amp;nbsp;On trouve cette probl&amp;eacute;matique g&amp;eacute;n&amp;eacute;ralement dans le cadre d&amp;#39;un h&amp;eacute;ritage. Une classe Customers peut h&amp;eacute;riter d&amp;rsquo;une classe User. Comment simplement relier ces objets m&amp;eacute;tiers &amp;agrave; la couche logique de la base de donn&amp;eacute;es sous jacente qui utilise &amp;agrave; la fois une table User et une table Customer reli&amp;eacute;es par une cl&amp;eacute; &amp;eacute;trang&amp;egrave;re&amp;nbsp;? Un autre probl&amp;egrave;me porte sur les relations entre les tables. Regardez les tables Customers&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;et la table Order de la base d&amp;rsquo;exemple AdventureWorks et les classes objets de m&amp;ecirc;me nom qui en d&amp;eacute;coulent.&amp;nbsp;Pour lier un ordre d&amp;rsquo;achat &amp;agrave; un client, la classe Order utilisera une propri&amp;eacute;t&amp;eacute; qui contenant une r&amp;eacute;f&amp;eacute;rence vers une instance de la classe Customer. Rien de bien compliqu&amp;eacute; puisque cot&amp;eacute; mod&amp;egrave;le logique, la table Order contient une cl&amp;eacute; &amp;eacute;trang&amp;egrave;re dont la valeur correspond &amp;agrave; la cl&amp;eacute; primaire de la table Customer. Inversement, une instance de la classe Customer doit pouvoir &amp;ecirc;tre reli&amp;eacute; &amp;agrave; l&amp;rsquo;ensemble de ses achats (liste d&amp;rsquo;instances de la classe Order). Malheureusement cot&amp;eacute; mod&amp;egrave;le logique la table Customer n&amp;rsquo;a pas de colonne permettant une telle reliaison. Ce ne sont l&amp;agrave; que deux exemples parmi une infinit&amp;eacute; d&amp;rsquo;autres mettant en &amp;eacute;vidence la difficult&amp;eacute; de faire cohabiter dans un projet le mod&amp;egrave;le conceptuel et le mod&amp;egrave;le logique.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Ces diff&amp;eacute;rences entre logique et conceptuel sont g&amp;eacute;n&amp;eacute;ralement appel&amp;eacute;s&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;(d&amp;eacute;sol&amp;eacute; pour la francisation) &amp;laquo;&amp;nbsp;d&amp;eacute;callage d&amp;rsquo;imp&amp;eacute;dance&amp;nbsp;&amp;raquo; (pour &amp;laquo;&amp;nbsp;Impedance mismatch&amp;nbsp;&amp;raquo;). &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Nombre de solutions existent pour passer du mod&amp;egrave;le logique &amp;agrave; un mod&amp;egrave;le objet (Strongly Typed Dataset, Dataset, Code Smith, &amp;hellip;). Ces m&amp;eacute;thodes consistent bien souvent simplement &amp;agrave; relier une classe et ses propri&amp;eacute;t&amp;eacute;s &amp;agrave; une table et ses colonnes. Le tout en ajoutant quelques traitements simples li&amp;eacute;s &amp;agrave; une analyse s&amp;eacute;mantique rudimentaire. Le gain pour le d&amp;eacute;veloppeur est assez limit&amp;eacute;. Il &amp;eacute;vite l&amp;rsquo;&amp;eacute;criture des classes et quelques op&amp;eacute;rations CRUD basiques (Create, Read, Update, Delete) mais il est souvent oblig&amp;eacute; d&amp;rsquo;encapsuler le mod&amp;egrave;le g&amp;eacute;n&amp;eacute;r&amp;eacute; d&amp;rsquo;un grand nombre de fonctionnalit&amp;eacute;s non coh&amp;eacute;rentes et lourdes pour tenter d&amp;rsquo;approcher au maximum le mod&amp;egrave;le conceptuel. &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;L&amp;rsquo;approche du Framework Entity est diff&amp;eacute;rente. Il part du mod&amp;egrave;le logique&amp;nbsp;et&amp;nbsp;offre les moyens d&amp;#39;interpoler la transition&amp;nbsp;entre conceptuel et logique. Il effectue pour cela trois it&amp;eacute;rations. Tout d&amp;#39;abord, &amp;agrave; la mani&amp;egrave;re classique d&amp;#39;un dataset, il effectue des relations simples entre une table et une classe, une colonne et une prorpri&amp;eacute;t&amp;eacute; et une cl&amp;eacute; &amp;eacute;trang&amp;egrave;re et la classe associ&amp;eacute;e. Il &amp;eacute;tudie ensuite&amp;nbsp;les relations entre les table et&amp;nbsp;stockent les informations li&amp;eacute;es &amp;agrave; celles ci. Enfin il&amp;nbsp;&amp;quot;trace&amp;quot; un lien entre les relations et les classes impact&amp;eacute;es. Ainsi le framework est capable de lier le mod&amp;egrave;le objet au plus pr&amp;ecirc;t du mod&amp;egrave;le logique en leur donnant un traitement interne intelligente tout en restant fid&amp;egrave;le au mod&amp;egrave;le conceptuel. &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Lorsque l&amp;#39;entity framework doit g&amp;eacute;n&amp;eacute;rer une classe objet &amp;agrave; partir d&amp;#39;une table lambda il sait quelles propri&amp;eacute;t&amp;eacute;s elles utilise, quels autres objects m&amp;eacute;tiers elle r&amp;eacute;f&amp;eacute;rence et quels autres objets m&amp;eacute;tiers r&amp;eacute;f&amp;eacute;rencent cette classe. L&amp;#39;entity framework permet enfin, au d&amp;eacute;veloppeur, de participer au workflow de g&amp;eacute;n&amp;eacute;ration des classes en leur ajoutant des m&amp;eacute;tadatas permettant de rendre le mod&amp;egrave;le objet en sortie r&amp;eacute;ellement &amp;quot;m&amp;eacute;tier&amp;quot;.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Les classes g&amp;eacute;n&amp;eacute;r&amp;eacute;es sont d&amp;eacute;clar&amp;eacute;e &amp;laquo;&amp;nbsp;partial&amp;nbsp;&amp;raquo; : les d&amp;eacute;veloppeurs peuvent les&amp;nbsp;&amp;eacute;tendre &amp;agrave; souhait en ajoutant des propri&amp;eacute;t&amp;eacute;s et des fonctionnalit&amp;eacute;s qui ne peuvent pas &amp;ecirc;tre &amp;quot;calcul&amp;eacute;es&amp;quot; &amp;agrave; partir du mod&amp;egrave;le logique de la source de donn&amp;eacute;es. Ces classes&amp;nbsp;h&amp;eacute;ritent en outre de classes sp&amp;eacute;ciales du framework Entity qui leur offre un appareillage efficace pour passer au travers du &amp;laquo;&amp;nbsp;d&amp;eacute;calage d&amp;rsquo;imp&amp;eacute;dance&amp;nbsp;&amp;raquo; entre logique et conceptuel et surtout pour calculer et supprimer le delta existant entre&amp;nbsp;la repr&amp;eacute;sentation des donn&amp;eacute;es dans le syst&amp;egrave;me de stockage et ces m&amp;ecirc;mes donn&amp;eacute;es dans le mod&amp;egrave;le objet actuellement manipul&amp;eacute;s dans l&amp;rsquo;application. Ces classes sp&amp;eacute;ciales appartiennent &amp;agrave; une couche sp&amp;eacute;cifique du framework Entity nomm&amp;eacute;e &amp;laquo;&amp;nbsp;Object Services&amp;nbsp;&amp;raquo;. C&amp;#39;est &amp;agrave; l&amp;#39;aide des fonctionnalit&amp;eacute;s de cette couche que le d&amp;eacute;veloppeur va actualier un objet, le descendre dans la couche objet, le supprimer, etc.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Pour terminer, le framework Entity rend le mod&amp;egrave;le conceptuel &amp;laquo;&amp;nbsp;interractif&amp;nbsp;&amp;raquo; et &amp;laquo;&amp;nbsp;portable&amp;nbsp;&amp;raquo; : Interractif d&amp;rsquo;abord puisqu&amp;rsquo;il offre aux d&amp;eacute;veloppeurs la possibilit&amp;eacute; d&amp;rsquo;effectuer des requ&amp;ecirc;tes sur les entit&amp;eacute;s et leurs relations en transcrivant ces requ&amp;ecirc;tes en un ensemble de commandes compr&amp;eacute;hensibles pour la sous de donn&amp;eacute;es sous jacente (Sql dans le cas d&amp;#39;une base de donn&amp;eacute;es). Le d&amp;eacute;veloppeur connaissant la technologie Linq y verra l&amp;agrave; un int&amp;eacute;r&amp;ecirc;t particulier. De ceci d&amp;eacute;coule la portabilit&amp;eacute;. En laissant au framework le soin de construire lui-m&amp;ecirc;me les commandes on devient ind&amp;eacute;pendant de la plateforme de stockage des donn&amp;eacute;es.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;EDM (Entity Data Model)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Nous parlions de trois it&amp;eacute;rations dans le point pr&amp;eacute;c&amp;eacute;dent pour l&amp;#39;&amp;eacute;tude du mod&amp;egrave;le conceptuel &amp;agrave; partir du mod&amp;egrave;le logique. Ces it&amp;eacute;rations sont exprim&amp;eacute;es sous la forme de fichiers de sp&amp;eacute;cifications Xml qu&amp;rsquo;on appelle l&amp;rsquo;Entity Data Model ou EDM. Ce dernier est donc d&amp;eacute;fini par trois fichiers&amp;nbsp;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Un fichier .csdl pour la d&amp;eacute;finition du sch&amp;eacute;ma conceptuel de donn&amp;eacute;es (Conceptuel schema definition language file).&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Un fichier .ssdl pour la d&amp;eacute;finition du sch&amp;eacute;ma logique des donn&amp;eacute;es (Store schema d&amp;eacute;finition file)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Un fichier .msl de cartographie pour exprimer les liens entre les deux mod&amp;egrave;les (Mapping specification language file).&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Il est possible de g&amp;eacute;n&amp;eacute;rer ces fichiers de plusieurs mani&amp;egrave;res. Nous verrons cela plus tard. Pour l&amp;#39;heure, il faut comprendre que les fichiers exprimant le mod&amp;egrave;le logique (ssdl) et la cartographique (msl)&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;peuvent &amp;ecirc;tre modifi&amp;eacute;s au besoin sans toucher au fichier conceptuel (csdl). Ainsi on s&amp;#39;adapte au besoin aux &amp;eacute;volutions de la source de donn&amp;eacute;es sans pour autant modifier les classes g&amp;eacute;n&amp;eacute;r&amp;eacute;es et surtout, sans modifier le code de l&amp;rsquo;application. On rejoint alors la notion de portabilit&amp;eacute; du point pr&amp;eacute;c&amp;eacute;dent. Le mod&amp;egrave;le logique o&amp;ugrave; sont stock&amp;eacute;es les donn&amp;eacute;es d&amp;eacute;pend fortement du fournisseur de donn&amp;eacute;es utilis&amp;eacute;. Il est au final possible de travailler sur un mod&amp;egrave;le conceptuel directement sans se soucier de ces &amp;eacute;l&amp;eacute;ments techniques. Le gain de temps de d&amp;eacute;veloppement, le gain de temps en maintenance applicative, et la p&amp;eacute;rennit&amp;eacute;s des productions se voit d&amp;eacute;cupl&amp;eacute;.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Microsoft offre deux moyens de g&amp;eacute;n&amp;eacute;rer l&amp;#39;EDM.&amp;nbsp; Les deux partent de la base pour effectuer leur traitement. Il est d&amp;#39;abord possible d&amp;#39;utiliser l&amp;#39;IDE visual studio, qui,&amp;nbsp;&amp;agrave; l&amp;#39;aide d&amp;#39;un Wizard, vous aiguillera dans les diff&amp;eacute;rentes &amp;eacute;tapes qui m&amp;egrave;nent &amp;agrave; l&amp;#39;EDM et au mod&amp;egrave;le objet g&amp;eacute;n&amp;eacute;r&amp;eacute;. Le second en utilisant un utilitaire en ligne de commande nomm&amp;eacute; edmgen.exe qui, appell&amp;eacute; avec les bon param&amp;egrave;tres g&amp;eacute;n&amp;eacute;rera lui aussi l&amp;#39;EDM et les classes li&amp;eacute;es.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&lt;/span&gt;&amp;nbsp;&lt;img width="546" src="http://msmvps.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin/0102.png" alt="Deux fa&amp;ccedil;ons de g&amp;eacute;n&amp;eacute;rer l&amp;#39;EDM" height="287" style="border:2px solid black;vertical-align:middle;" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:x-small;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Dans le premier cas, Visual Studio genera un fichier edmx qui contiendra l&amp;#39;ensemble des trois fichiers EDM (.csdl, .ssdl et .msl). Dans le second cas, l&amp;#39;utilitaire generera trois fichiers distincts. Le fichier edmx est peut &amp;ecirc;tre plus &amp;quot;propre&amp;quot; et simple d&amp;#39;utilisation, mais il n&amp;#39;est pas aussi mal&amp;eacute;able que les trois fichiers s&amp;eacute;par&amp;eacute;s. En outre, les op&amp;eacute;rations que le d&amp;eacute;veloppeur peut r&amp;eacute;aliser &amp;agrave; la main sur son contenu sont limit&amp;eacute;es.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Calibri;"&gt;Travailler avec les donn&amp;eacute;es &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Comment interagir avec la couche m&amp;eacute;tier g&amp;eacute;n&amp;eacute;r&amp;eacute;e par le framework Entity et par extension les donn&amp;eacute;es li&amp;eacute;es&amp;nbsp;? Les classes de la couche Object Services dont nous avons parl&amp;eacute; pr&amp;eacute;c&amp;eacute;demment utilisent les sp&amp;eacute;cifications EDM pour traduire les requ&amp;ecirc;tes m&amp;eacute;tiers li&amp;eacute;es au mod&amp;egrave;le conceptuel en requ&amp;ecirc;tes sp&amp;eacute;cifiquement adapt&amp;eacute;es &amp;agrave; la couche de stockage de donn&amp;eacute;es. Inversement, le r&amp;eacute;sultat de ces requ&amp;ecirc;tes est interpol&amp;eacute; en un jeu d&amp;rsquo;objets manipul&amp;eacute;s par la couche Object Services. Il est possible de requ&amp;ecirc;ter le mod&amp;egrave;le conceptuel de trois fa&amp;ccedil;on&amp;nbsp;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Par l&amp;rsquo;interm&amp;eacute;diaire de Linq to Entities, un provider Language-Integrated-Query (Linq) sp&amp;eacute;cifiquement d&amp;eacute;di&amp;eacute; au requ&amp;ecirc;tage de mod&amp;egrave;les conceptuels.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Via Entity Sql, un Sql abstrait ind&amp;eacute;pendant du fournisseur de donn&amp;eacute;es qui lui aussi travaille directement avec le mod&amp;egrave;le conceptuel.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span style="font-family:Symbol;mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol;"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;span style="font-size:small;"&gt;&amp;middot;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;A l&amp;rsquo;aide du Query Builder, un outil qui permet de construire des requ&amp;ecirc;tes compatible Entity Sql sous un style assez proche des requ&amp;ecirc;tes Linq.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Les requ&amp;ecirc;tes issues de la couche Object Services sont g&amp;eacute;r&amp;eacute;es par l&amp;rsquo;EntityClient data provider. Celui-ci s&amp;rsquo;occupe des connexions vers la source de donn&amp;eacute;es, de la transformation des req&amp;ecirc;tes en langage abstrait en requ&amp;ecirc;tes adapt&amp;eacute;es &amp;agrave; la source de donn&amp;eacute;es et renvoie un data reader que la couche Object Services peut manipuler. L&amp;#39;entityClient data provider se base sur l&amp;#39;EDM pour comprendre les relations entre conceptuel et logique et r&amp;eacute;pondre aux exigence des requ&amp;ecirc;tes formul&amp;eacute;es par l&amp;#39;application.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;L&amp;rsquo;image suivante illustre l&amp;rsquo;architecture&amp;nbsp;:&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&lt;img width="482" src="http://msmvps.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin/entityarchi.gif" alt="Architecture du framework Entity" height="450" style="vertical-align:middle;border:2px solid black;" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:8pt;color:#000000;line-height:115%;font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-fareast-language:FR;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;Terminons en abordant rapidement&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;ObjectContext. Cette classe repr&amp;eacute;sente l&amp;rsquo;ensemble des donn&amp;eacute;es repr&amp;eacute;sent&amp;eacute;es par le mod&amp;egrave;le Conceptuel &amp;agrave; un instant T. C&amp;rsquo;est par elle que s&amp;rsquo;effectuent les op&amp;eacute;rations de type CRUD et les &amp;eacute;changes entre les objets m&amp;eacute;tiers et la couche Object Services. L&amp;#39;objetcontext permet d&amp;#39;eviter de descendre dans les couches basses de l&amp;#39;architecture lorsque cel&amp;agrave; n&amp;#39;est pas n&amp;eacute;cessaire (pourquoi rappatrier des donn&amp;eacute;es de la base pour un objet qui a d&amp;eacute;j&amp;agrave; &amp;eacute;t&amp;eacute; charg&amp;eacute; ?).&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;&lt;strong&gt;Une r&amp;eacute;volution dans la manipulation de donn&amp;eacute;es&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;L&amp;#39;entity framework est un r&amp;eacute;el atout pour tout d&amp;eacute;veloppeur travaillant sur des appications essentiellement tourn&amp;eacute;es vers la manipulation de donn&amp;eacute;es. Il offre des moyens builtin, eprouv&amp;eacute;s et efficaces pour travailler&amp;nbsp;&amp;agrave; haut niveau sur des entit&amp;eacute;s proches de l&amp;#39;expression de besoins m&amp;eacute;tiers que la MOA peut en faire. Les d&amp;eacute;veloppements peuvent ainsi s&amp;#39;adapter rapidement et sans contraintes &amp;agrave; toute exigence m&amp;eacute;tier sans avoir &amp;agrave; se soucier de leur impl&amp;eacute;mentation technique et des &amp;eacute;volutions li&amp;eacute;es telle qu&amp;#39;une architecture logicielle peut en&amp;nbsp;subir. Il s&amp;#39;agit en outre d&amp;#39;un moyen tr&amp;egrave;s efficace, coupl&amp;eacute; avec ADO.Net Data Services pour exposer des donn&amp;eacute;es facilement, rapidement et proprement sur le Web en lieu et places des sempiternels Web Services qui semblent d&amp;eacute;sormais d&amp;eacute;pass&amp;eacute;s.&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:small;font-family:Calibri;"&gt;On ne peut regretter qu&amp;#39;une chose, qu&amp;#39;aucun outil g&amp;eacute;n&amp;eacute;rant des diagrammes de classe (Visual Studio, Visio)&amp;nbsp; utilis&amp;eacute;s par la MOA ne puisse g&amp;eacute;n&amp;eacute;rer automatiquement les fichiers csdl :).&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:x-small;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:x-small;"&gt;Valentin Billotte&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;a href="http://msmvps.com/blogs/valentin/archive/2008/08/30/ado-net-entity-framework-sommaire-des-cours.aspx"&gt;&lt;img width="24" src="http://msmvps.com/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/valentin/sommaire.png" height="24" style="vertical-align:middle;" alt="" /&gt;&lt;span style="font-size:small;font-family:Calibri;background-color:#ffff00;"&gt;Revenir au sommaire&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1645343" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/valentin/archive/tags/ADO.Net/default.aspx">ADO.Net</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Object+Services/default.aspx">Object Services</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Entity+Data+Model/default.aspx">Entity Data Model</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/EDM/default.aspx">EDM</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Mod_26002300_232_3B00_le+Conceptuel/default.aspx">Mod&amp;#232;le Conceptuel</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/ObjectContext/default.aspx">ObjectContext</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Linq+To+Entities/default.aspx">Linq To Entities</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/Mod_26002300_232_3B00_le+Logique/default.aspx">Mod&amp;#232;le Logique</category><category domain="http://msmvps.com/blogs/valentin/archive/tags/ADO.NET+Entity+Framework/default.aspx">ADO.NET Entity Framework</category></item></channel></rss>