<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jérôme Lambert &#187; ADO.NET</title>
	<atom:link href="https://blog.developpez.com/jerome/pcategory/net/ado-net/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/jerome</link>
	<description>My Microsoft Development World</description>
	<lastBuildDate>Mon, 17 Dec 2012 11:34:42 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Modèle Entity Framework généré avec SQL Server 2008 et utilisé sous SQL Server 2005</title>
		<link>https://blog.developpez.com/jerome/p9895/net/modele_entity_framework_genere_avec_sql_2005</link>
		<comments>https://blog.developpez.com/jerome/p9895/net/modele_entity_framework_genere_avec_sql_2005#comments</comments>
		<pubDate>Fri, 15 Apr 2011 19:37:29 +0000</pubDate>
		<dc:creator><![CDATA[Jérôme Lambert]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ADO.NET]]></category>
		<category><![CDATA[Entity Framework]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Suite à un déploiement d&#8217;une application chez un client, j&#8217;ai eu la mauvaise surprise de constater que cette application ne fonctionnait pas dans l&#8217;environnement de production. Après un petit temps à déboguer l&#8217;application, je découvre l&#8217;erreur suivante : The version of SQL Server in use does not support datatype &#8216;datetime2&#8242;. Au niveau du code, je ne fais jamais mention de ce type &#171;&#160;datetime2&#8243;. Cu côté de la base de données, tous mes champs utilisent le [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Suite à un déploiement d&rsquo;une application chez un client, j&rsquo;ai eu la mauvaise surprise de constater que cette application ne fonctionnait pas dans l&rsquo;environnement de production. Après un petit temps à déboguer l&rsquo;application, je découvre l&rsquo;erreur suivante :</p>
<blockquote><p><strong><em>The version of SQL Server in use does not support datatype &lsquo;datetime2&prime;.</em></strong></p>
</blockquote>
<p>Au niveau du code, je ne fais jamais mention de ce type &laquo;&nbsp;datetime2&Prime;. Cu côté de la base de données, tous mes champs utilisent le type &laquo;&nbsp;datetime&nbsp;&raquo;. Même pas les nouveaux types &laquo;&nbsp;date&nbsp;&raquo; et &laquo;&nbsp;time&nbsp;&raquo; de SQL Server 2008. Très vite, je commence à me dire que la base de données est très certainement en cause car dans mon environnement de développement, la base de données est sous SQL Server 2008, alors que dans l&rsquo;environnement de mon client, la base de données est sous SQL Server 2005.</p>
<p>Finalement, je finis par trouver la réponse lors de recherches sur le web et le problème a bien un lien avec la base de données mais pas directement car le responsable est le modèle Entity Framework ! Lors de la création de ce modèle, le designer a pris en compte le type de serveur qui a servit à générer mon modèle et dans mon cas, c&rsquo;était SQL Server 2008. Cette information est utile pour Entity Framework car cela va lui permettre d&rsquo;optimiser les requêtes générées vers la base de données lors de l&rsquo;exécution de l&rsquo;exécution car l&rsquo;utilisation du type &laquo;&nbsp;datetime2&Prime; est plus performante dans le cas où le serveur SQL est en version 2008. Malheureusement ce type n&rsquo;est pas reconnu sous SQL Server 2005 et Entity Framework ne changera pas de stratégie dans ce cas là.</p>
<p>La solution est donc dans le modèle Entity Framework.</p>
<p>Ouvrez votre modèle avec &laquo;&nbsp;Open With&nbsp;&raquo; et sélectionnez &laquo;&nbsp;XML (Text) Editor&nbsp;&raquo;.</p>
<div id="codeSnippetWrapper">
<pre id="codeSnippet" class="csharpcode"><span class="html">&lt;Schema</span> <span class="attr">Namespace</span><span class="kwrd">="SampleModel.Store"</span> <br /><span class="attr">Alias</span><span class="kwrd">="Self"</span> <br /><span class="attr">Provider</span><span class="kwrd">="System.Data.SqlClient"</span> <br /><span class="attr">ProviderManifestToken</span><span class="kwrd">="2008"</span> <br /><span class="attr">xmlns:store</span><span class="kwrd">=<a href="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator">http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator</a></span> <br /><span class="attr">xmlns</span><span class="kwrd">=<a href="http://schemas.microsoft.com/ado/2009/02/edm/ssdl">http://schemas.microsoft.com/ado/2009/02/edm/ssdl</a> /&gt;</span></pre>
</div>
<p>Vous trouverez au début de votre fichier un attribut &laquo;&nbsp;ProviderManifestToken&nbsp;&raquo; comme ci-dessus avec la valeur &laquo;&nbsp;2008&nbsp;&raquo;. Il vous suffit de remplacer la valeur par &laquo;&nbsp;2005&nbsp;&raquo; et Entity Framework génèrera à l&rsquo;avenir du code à l&rsquo;exécution compatible avec les bases de données SQL Server 2005.</p>
<p>Par contre, une mauvaise nouvelle. A chaque fois que vous mettrez à jour votre modèle, la valeur sera mise à jour en fonction de la base de données que vous utilisez.</p>
<p>Dommage !</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Téléchargez les premiers providers ADO.NET SQLite, Oracle, MySQL et PostgreSQL avec support de ADO.NET Entity Framework</title>
		<link>https://blog.developpez.com/jerome/p6338/net/telechargez_les_premiers_providers_ado_n</link>
		<comments>https://blog.developpez.com/jerome/p6338/net/telechargez_les_premiers_providers_ado_n#comments</comments>
		<pubDate>Sun, 07 Sep 2008 23:04:58 +0000</pubDate>
		<dc:creator><![CDATA[Jérôme Lambert]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ADO.NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Depuis les versions béta de ADO.NET Entity Framework, nous étions contraints de nous contenter de SQL Server pour la compatibilité avec ce framework. Certes, des sociétés ont développé des providers pour une compatibilité avec d&#8217;autres systèmes de gestion de base de données mais beaucoup attendaient la version finale de ADO.NET Entity Framework. Aujourd&#8217;hui, on commence tout doucement à voir apparaître différents providers offrant une compatibilité avec d&#8217;autres SGBD, c&#8217;est le cas de SQLLite, Oracle, MySQL [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><font face="Tahoma" size="2">Depuis les versions béta de ADO.NET Entity Framework, nous étions contraints de nous contenter de SQL Server pour la compatibilité avec ce framework. Certes, des sociétés ont développé des providers pour une compatibilité avec d&rsquo;autres systèmes de gestion de base de données mais beaucoup attendaient la version finale de ADO.NET Entity Framework. Aujourd&rsquo;hui, on commence tout doucement à voir apparaître différents providers offrant une compatibilité avec d&rsquo;autres SGBD, c&rsquo;est le cas de SQLLite, Oracle, MySQL et PostgreSQL.</font></p>
<p><span id="more-12"></span><br />
<font face="Tahoma" size="2"></font>
<p><font face="Tahoma" size="2"><font face="Tahoma" size="2">Premier provider disponible en même temps que la sortie de la version RTM de ADO.NET Entity Framework (ce n&rsquo;est pas rien !) : <strong>System.Data.SQLite</strong>, développé par </font><a href="http://sqlite.phxsoftware.com/" target="_blank"><font face="Tahoma" size="2">Robert Simpson</font></a><font face="Tahoma" size="2"> de la société Phoenix Software International. Ce provider est open source et téléchargeable sur SourceForge.net.</font></font></p>
<p><font face="Tahoma" size="2">Et dernièrement, c&rsquo;est la société </font><a href="http://devart.com/" target="_blank"><font face="Tahoma" size="2">Devart</font></a><font face="Tahoma" size="2"> qui a annoncé la mise à jour de ses providers ADO.NET :</font></p>
<ul>
<li><font face="Tahoma" size="2"><strong>OraDirect .NET</strong></font> </li>
<li><font face="Tahoma" size="2"><strong>MyDirect .NET</strong></font> </li>
<li><font face="Tahoma" size="2"><strong>PostgreSQL .NET</strong></font> </li>
</ul>
<p><font face="Tahoma" size="2">Ces mises à jour incluent bien évidemment un support de ADO.NET Entity Framework. Les produits Devart étant payant, vous pourrez tout de même télécharger des versions d&rsquo;évaluation de 30 jours sur le site de la société.</font></p>
<p><font face="Tahoma" size="2">Un petit résumé des liens indispensables :</font></p>
<ul>
<li><font face="Tahoma" size="2"><a href="http://sourceforge.net/project/showfiles.php?group_id=132486&amp;package_id=145568" target="_blank">Téléchargez le provider ADO.NET 2.0 pour SQLlite</a></font> </li>
<li><font face="Tahoma" size="2"><a href="http://devart.com/oranet/" target="_blank">Téléchargez la version d&rsquo;évaluation de OraDirect .NET</a></font> </li>
<li><font face="Tahoma" size="2"><a href="http://devart.com/mysqlnet/" target="_blank">Téléchargez la version d&rsquo;évaluation de MyDirect .NET</a></font> </li>
<li><font face="Tahoma" size="2"><a href="http://devart.com/pgsqlnet/" target="_blank">Téléchargez la version d&rsquo;évaluation de PostgreSQL .NET</a></font> </li>
</ul>
<p><font face="Tahoma" size="2">Voila une belle voix ouverte et quelque chose me dit que ces providers sont loin d&rsquo;être les derniers&#8230; Patience donc.</font></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Résultat de procédure stockée incorrect avec Linq to SQL</title>
		<link>https://blog.developpez.com/jerome/p6280/net/resultat_de_procedure_stockee_incorrect</link>
		<comments>https://blog.developpez.com/jerome/p6280/net/resultat_de_procedure_stockee_incorrect#comments</comments>
		<pubDate>Fri, 29 Aug 2008 01:08:19 +0000</pubDate>
		<dc:creator><![CDATA[Jérôme Lambert]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ADO.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Linq]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Aujourd&#8217;hui mon patron m&#8217;interpelle concernant un comportement étrange d&#8217;une procédure stockée avec Linq to SQL. La procédure stockée est un simple &#171;&#160;SELECT field1, COUNT(*)&#160;&#187; et pourtant impossible de récupérer un résultat correct. Histoire de pouvoir vous montrer des exemples concrets, je vais transposer la situation avec l&#8217;utilisation de la base de données Northwind. Comme je vous le disais, la procédure stockée récalcitrante consiste à récupérer la liste des clients avec le nombre de commandes qu&#8217;ils [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><font face="Tahoma" size="2">Aujourd&rsquo;hui mon patron m&rsquo;interpelle concernant un comportement étrange d&rsquo;une procédure stockée avec Linq to SQL. La procédure stockée est un simple &laquo;&nbsp;SELECT field1, COUNT(*)&nbsp;&raquo; et pourtant impossible de récupérer un résultat correct.</font></p>
<p><span id="more-11"></span><br />
<font face="Tahoma" size="2"></font>
<p><font face="Tahoma" size="2">Histoire de pouvoir vous montrer des exemples concrets, je vais transposer la situation avec l&rsquo;utilisation de la base de données Northwind.</font></p>
<p><font face="Tahoma" size="2">Comme je vous le disais, la procédure stockée récalcitrante consiste à récupérer la liste des clients avec le nombre de commandes qu&rsquo;ils ont passé :</font></p>
<p><font face="Tahoma" size="2"></font></p>
<table style="border-right: #6699cc 1px solid; border-top: #6699cc 1px solid; border-left: #6699cc 1px solid; border-bottom: #6699cc 1px solid; background-color: #eeeeee" cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td valign="top" width="100%">
<p><font face="Tahoma" size="2">CREATE PROCEDURE GetCustomersWithOrderCount              <br />AS               <br />BEGIN               <br />    SELECT Customers.ContactName, COUNT(*)               <br />    FROM Customers INNER JOIN Orders               <br />    ON Customers.CustomerID = Orders.CustomerID               <br />    GROUP BY Customers.ContactName               <br />END</font></p>
</td>
</tr>
</tbody>
</table>
<p><font face="Tahoma" size="2">Au niveau du projet, un modèle Linq to SQL Classes auquel on a ajouté la procédure stockée &laquo;&nbsp;GetCustomersWithOrderCount&nbsp;&raquo;.</font></p>
<p><font face="Tahoma" size="2">Comme on peut le voir dans le code généré, Linq to SQL a déduit la classe correspondant au résultat que la procédure stockée va renvoyer. En l&rsquo;absence d&rsquo;alias sur le champ &laquo;&nbsp;COUNT(*)&nbsp;&raquo;, le nom &laquo;&nbsp;Column1&Prime; a été donné par défaut.</font></p>
<table style="border-right: #6699cc 1px solid; border-top: #6699cc 1px solid; border-left: #6699cc 1px solid; border-bottom: #6699cc 1px solid; background-color: #eeeeee" cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td valign="top" width="100%">
<p><font face="Tahoma" size="2">public partial class GetCustomersWithOrderCountResult              <br />{               <br />    private string _ContactName;               <br />    private System.Nullable&lt;int&gt; _Column1;               <br />    public GetCustomersWithOrderCountResult()               <br />    {               <br />    }               <br />    [Column(Storage=&nbsp;&raquo;_ContactName&nbsp;&raquo;, DbType=&nbsp;&raquo;NVarChar(30)&nbsp;&raquo;)]               <br />    public string ContactName               <br />    {               <br />        get               <br />        {               <br />            return this._ContactName;               <br />        }               <br />        set               <br />        {               <br />            if ((this._ContactName != value))               <br />            {               <br />                this._ContactName = value;               <br />            }               <br />        }               <br />    }               <br />    [Column(Storage=&nbsp;&raquo;_Column1&Prime;, DbType=&nbsp;&raquo;Int&nbsp;&raquo;)]               <br />    public System.Nullable&lt;int&gt; Column1               <br />    {               <br />        get               <br />        {               <br />            return this._Column1;               <br />        }               <br />        set               <br />        {               <br />            if ((this._Column1 != value))               <br />            {               <br />                this._Column1 = value;               <br />            }               <br />        }               <br />    }               <br />}</font></p>
</td>
</tr>
</tbody>
</table>
<p><font face="Tahoma" size="2">Tout semble correct et on peut donc écrire le code qui va récupérer le résultat de la procédure stockée que nous avons précédemment créé :</font></p>
<table style="border-right: #6699cc 1px solid; border-top: #6699cc 1px solid; border-left: #6699cc 1px solid; border-bottom: #6699cc 1px solid; background-color: #eeeeee" cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td valign="top" width="100%">
<p><font face="Tahoma" size="2">using (ModelDataContext ctx = new ModelDataContext())              <br />{               <br />    foreach (var item in ctx.GetCustomersWithOrderCount().ToList())               <br />    {               <br />        Console.WriteLine(&laquo;&nbsp;{0} &#8211; {1}&nbsp;&raquo;, item.ContactName, item.Column1);               <br />    }               <br />}</font></p>
</td>
</tr>
</tbody>
</table>
<p><font face="Tahoma" size="2">Pourtant, lorsqu&rsquo;on lance le programme, on obtient un résultat plus qu&rsquo;étrange :</font></p>
<p> <center>
<p><a href="http://blog.developpez.com/media/130/WindowsLiveWriter/RsultatdeprocdurestockeincorrecteavecLin_7CE/image_12.png"><font face="Tahoma" color="#000000" size="2"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="208" alt="image" src="http://blog.developpez.com/media/130/WindowsLiveWriter/RsultatdeprocdurestockeincorrecteavecLin_7CE/image_thumb_5.png" width="677" border="0" /></font></a><font face="Tahoma" size="2"> </font></p>
<p> </center><center>
<p><a href="http://blog.developpez.com/media/130/WindowsLiveWriter/RsultatdeprocdurestockeincorrecteavecLin_7CE/image_2.png"><font face="Tahoma" size="2"></font></a></p>
<p> </center>
<p><font face="Tahoma" size="2">On récupère bien nos clients mais par contre aucune valeur pour le nombre de commandes et ce pour tous les clients ! Après une heure de recherche, je trouve enfin la solution via MSDN (une fois de plus ;)).</font></p>
<p><font face="Tahoma" size="2">Ce qui se passe, c&rsquo;est que Linq to SQL ne sait pas comment mapper le champ &laquo;&nbsp;COUNT(*)&nbsp;&raquo; de la procédure stockée à la propriété &laquo;&nbsp;Column1&Prime; de la classe &laquo;&nbsp;GetCustomersWithOrderCountResult&nbsp;&raquo; générée automatiquement.</font></p>
<p><font face="Tahoma" size="2">La solution est donc simple : il suffit de donner un alias à notre champ dans la procédure stockée :</font></p>
<table style="border-right: #6699cc 1px solid; border-top: #6699cc 1px solid; border-left: #6699cc 1px solid; border-bottom: #6699cc 1px solid; background-color: #eeeeee" cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td valign="top" width="100%">
<p><font face="Tahoma" size="2">ALTER PROCEDURE GetCustomersWithOrderCount              <br />AS               <br />BEGIN               <br />    SELECT Customers.ContactName, COUNT(*) as OrderCount               <br />    FROM Customers INNER JOIN Orders               <br />    ON Customers.CustomerID = Orders.CustomerID               <br />    GROUP BY Customers.ContactName               <br />END</font></p>
</td>
</tr>
</tbody>
</table>
<p><font face="Tahoma" size="2">Après une mise à jour du schéma Linq to SQL Classes, on peut remarquer que le changement a été pris en compte dans la classe &laquo;&nbsp;GetCustomersWithOrderCountResult&nbsp;&raquo;. La propriété &laquo;&nbsp;Column1&Prime; a bien été renommée en &laquo;&nbsp;OrderCount&nbsp;&raquo;.</font></p>
<table style="border-right: #6699cc 1px solid; border-top: #6699cc 1px solid; border-left: #6699cc 1px solid; border-bottom: #6699cc 1px solid; background-color: #eeeeee" cellspacing="0" cellpadding="2" width="100%">
<tbody>
<tr>
<td valign="top" width="100%">
<p><font face="Tahoma" size="2">public partial class GetCustomersWithOrderCountResult              <br />{               <br />    private string _ContactName;               <br />    private System.Nullable&lt;int&gt; _OrderCount;               <br />    public GetCustomersWithOrderCountResult()               <br />    {               <br />    }               <br />    [Column(Storage=&nbsp;&raquo;_ContactName&nbsp;&raquo;, DbType=&nbsp;&raquo;NVarChar(30)&nbsp;&raquo;)]               <br />    public string ContactName               <br />    {               <br />        get               <br />        {               <br />            return this._ContactName;               <br />        }               <br />        set               <br />        {               <br />            if ((this._ContactName != value))               <br />            {               <br />                this._ContactName = value;               <br />            }               <br />        }               <br />    }               <br />    [Column(Storage=&nbsp;&raquo;_OrderCount&nbsp;&raquo;, DbType=&nbsp;&raquo;Int&nbsp;&raquo;)]               <br />    public System.Nullable&lt;int&gt; OrderCount               <br />    {               <br />        get               <br />        {               <br />            return this._OrderCount;               <br />        }               <br />        set               <br />        {               <br />            if ((this._OrderCount != value))               <br />            {               <br />                this._OrderCount = value;               <br />            }               <br />        }               <br />    }               <br />}</font></p>
</td>
</tr>
</tbody>
</table>
<p><font face="Tahoma" size="2">Et lorsqu&rsquo;on exécute à nouveau notre code, on a enfin notre résultat tant attendu :</font></p>
<p> <center>
<p><a href="http://blog.developpez.com/media/130/WindowsLiveWriter/RsultatdeprocdurestockeincorrecteavecLin_7CE/image_14.png"><font face="Tahoma" color="#000000" size="2"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="208" alt="image" src="http://blog.developpez.com/media/130/WindowsLiveWriter/RsultatdeprocdurestockeincorrecteavecLin_7CE/image_thumb_6.png" width="677" border="0" /></font></a><font face="Tahoma" size="2"> </font></p>
<p> </center>
<p><font face="Tahoma" size="2">Tout ça pour ça vous allez me dire mais c&rsquo;est bon de le savoir quand même car au final, je peux vous assurer que l&rsquo;on a perdu beaucoup de temps avant de comprendre ce qui n&rsquo;allait pas <img src="https://blog.developpez.com/jerome/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></font></p>
<p><font face="Tahoma" size="2">N&rsquo;hésitez pas à réagir en laissant un commentaire.</font></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quoi de neuf pour ADO.NET Entity Framework avec VS 2008 SP1 ?</title>
		<link>https://blog.developpez.com/jerome/p6200/net/quoi_de_neuf_pour_ado_net_entity_framewo</link>
		<comments>https://blog.developpez.com/jerome/p6200/net/quoi_de_neuf_pour_ado_net_entity_framewo#comments</comments>
		<pubDate>Tue, 12 Aug 2008 20:29:54 +0000</pubDate>
		<dc:creator><![CDATA[Jérôme Lambert]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ADO.NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Comme annoncé hier, la sortie du Service Pack 1 pour Visual Studio 2008 et .NET Framework 3.5 a conduit à des projets enfin disponibles dans leur version finale. C&#8217;est le cas pour ADO.NET Entity Framework et la team ADO.NET a réagit assez vite pour nous donner la liste des changement qui ont eu lieu dans cette version finale. Je vous laisse donc découvrir ces changements directement sur le billet de la team ADO.NET. A savoir [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><font face="Tahoma" size="2">Comme </font><a href="http://blog.developpez.com/jerome?title=service_pack_1_pour_visual_studio_2008_e"><font face="Tahoma" size="2">annoncé hier</font></a><font face="Tahoma" size="2">, la sortie du Service Pack 1 pour Visual Studio 2008 et .NET Framework 3.5 a conduit à des projets enfin disponibles dans leur version finale. C&rsquo;est le cas pour <strong>ADO.NET Entity Framework</strong> et la team ADO.NET a réagit assez vite pour nous donner la liste des changement qui ont eu lieu dans cette version finale.</font></p>
<p><font face="Tahoma" size="2">Je vous laisse donc découvrir ces changements directement </font><a href="http://blogs.msdn.com/adonet/archive/2008/08/11/what-s-new-in-the-vs-2008-sp1.aspx" target="_blank"><strong><font face="Tahoma" size="2">sur le billet de la team ADO.NET</font></strong></a><font face="Tahoma" size="2">.</font></p>
<p><font face="Tahoma" size="2">A savoir que les samples ont aussi été mis à jour, rendez-vous </font><a href="http://blogs.msdn.com/adonet/archive/2008/08/12/updated-entity-framework-samples-for-rtm.aspx" target="_blank"><strong><font face="Tahoma" size="2">ici</font></strong></a><font face="Tahoma" size="2"> pour en savoir plus.</font></p>
<p><font face="Tahoma" size="2">[Edit] La team .NET vient de poster sur le blog la liste des <a href="http://blogs.msdn.com/adonet/archive/2008/08/12/entity-framework-rtm-breaking-changes.aspx" target="_blank"><strong>&laquo;&nbsp;breaking changes&nbsp;&raquo;</strong></a> de cette nouvelle release. Ces changements concernent le <em>provider</em>, <em>entity services</em>, <em>mapping &amp; metadata</em>, <em>EntityDataSource</em> ainsi que les <em>tools</em>.</font></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Service Pack 1 pour Visual Studio 2008 et le .NET Framework 3.5 disponible</title>
		<link>https://blog.developpez.com/jerome/p6191/net/service_pack_1_pour_visual_studio_2008_e</link>
		<comments>https://blog.developpez.com/jerome/p6191/net/service_pack_1_pour_visual_studio_2008_e#comments</comments>
		<pubDate>Tue, 12 Aug 2008 01:18:37 +0000</pubDate>
		<dc:creator><![CDATA[Jérôme Lambert]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ADO.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Des rumeurs laissaient sous entendre un Service Pack 1 pour bientôt, c&#8217;est maintenant officiel, vous pouvez dès aujourd&#8217;hui télécharger le Service Pack 1 (SP1) pour Visual Studio 2008 et le .NET Framework 3.5. Pour les utilisateurs de versions Express, le SP1 est aussi disponibles pour ces versions.   Si il y a deux mots que Microsoft veut faire passer pour cette mise à jour, ce sont fiabilité et performance. WPF, AJAX, ADO.NET, JavaScript ou encore [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><font face="Tahoma" size="2">Des rumeurs laissaient sous entendre un Service Pack 1 pour bientôt, c&rsquo;est maintenant officiel, vous pouvez dès aujourd&rsquo;hui télécharger le <strong>Service Pack 1</strong> (<em>SP1</em>) pour <strong>Visual Studio 2008</strong> et le <strong>.NET Framework 3.5</strong>. Pour les utilisateurs de versions Express, le SP1 est aussi disponibles pour ces versions.</font></p>
<p> <center><font face="Tahoma" size="2"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="75" alt="image" src="http://blog.developpez.com/media/130/WindowsLiveWriter/ServicePack1pourVisualStudio.5disponible_1540/image_thumb.png" width="250" border="0" /></font></center>
<p><font face="Tahoma" size="2"></font></p>
<p><font face="Tahoma" size="2"> </font></p>
<p><font face="Tahoma" size="2">Si il y a deux mots que Microsoft veut faire passer pour cette mise à jour, ce sont <strong>fiabilité</strong> et <strong>performance</strong>. WPF, AJAX, ADO.NET, JavaScript ou encore déploiement, tout y passe et vous ne serez certainement pas déçu :</font></p>
<ul>
<li><font face="Tahoma" size="2">Améliorations des performances des designers pour les applications WPF </font></li>
<li><font face="Tahoma" size="2">Améliorations des outils pour le développement d&rsquo;applications AJAX </font></li>
<li><font face="Tahoma" size="2">Améliorations des designers pour le travail avec ADO.NET Entity Framework </font></li>
<li><font face="Tahoma" size="2">Meilleur support de JavaScript</font></li>
<li><font face="Tahoma" size="2">Déploiement d&rsquo;applications web simplifié</font></li>
</ul>
<p><font face="Tahoma" size="2">Mais ce service pack, c&rsquo;est aussi des nouveautés ainsi que des projets passés en versions finales :</font></p>
<ul>
<li><font face="Tahoma" size="2">.NET Framework Client Profile </font></li>
<li><font face="Tahoma" size="2">ADO.NET Entity Framework</font></li>
<li><font face="Tahoma" size="2">ADO.NET Data Services</font></li>
<li><font face="Tahoma" size="2">Support de SQL Server 2008</font></li>
<li><font face="Tahoma" size="2">ASP.NET Dynamic Data</font></li>
</ul>
<p><font face="Tahoma" size="2">Pour les téléchargements, je vous redirige sur </font><a href="http://blog.developpez.com/broux?title=visual_studio_2008_sp1_disponible"><strong><font face="Tahoma" size="2">le blog de Benjamin</font></strong></a><font face="Tahoma" size="2"> qui a déjà fait le nécessaire pour récolter tout ce qu&rsquo;il faut savoir <img src="https://blog.developpez.com/jerome/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></font></p>
<p><font face="Tahoma" size="2">Moi qui attendais la version finale de ADO.NET Entity Framework pour écrire un article sur le sujet, je suis plus que satisfait ^^</font></p>
<p><font face="Tahoma" size="2">Bon développement à tous !</font></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ADO.NET Entity Framework V2.0 &#8211; Un nouveau blog pour plus de transparence</title>
		<link>https://blog.developpez.com/jerome/p5964/net/ado-net/ado_net_entity_framework_2_0_un_nouveau</link>
		<comments>https://blog.developpez.com/jerome/p5964/net/ado-net/ado_net_entity_framework_2_0_un_nouveau#comments</comments>
		<pubDate>Wed, 25 Jun 2008 01:15:36 +0000</pubDate>
		<dc:creator><![CDATA[Jérôme Lambert]]></dc:creator>
				<category><![CDATA[ADO.NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[We would like to start by being as transparent as possible in our design process Voila les mots que l&#8217;on a pu lire sur le blog de l&#8217;équipe ADO.NET de Microsoft en charge du projet Entity Framework. Comme annoncé, aujourd&#8217;hui marque le premier jour où le processus de conception commence pour la prochaine version : Entity Framework V2.0. L&#8217;équipe ADO.NET ayant une réelle envie de fournir un framework répondant au mieux aux besoins métiers des [&#8230;]]]></description>
				<content:encoded><![CDATA[<blockquote><p><font face="Tahoma" size="2">We would like to start by being as transparent as possible in our design process</font></p>
</blockquote>
<p><font face="Tahoma" size="2">Voila les mots que l&rsquo;on a pu lire sur <a href="http://blogs.msdn.com/adonet/archive/2008/06/23/entity-framework-v2-transparency-in-the-design-process.aspx">le blog de l&rsquo;équipe ADO.NET de Microsoft</a> en charge du projet <strong>Entity Framework</strong>. </font></p>
<p><font face="Tahoma" size="2">Comme annoncé, aujourd&rsquo;hui marque le premier jour où le processus de conception commence pour la prochaine version : <strong>Entity Framework V2.0</strong>.</font></p>
<p><font face="Tahoma" size="2">L&rsquo;équipe ADO.NET ayant une réelle envie de fournir un framework répondant au mieux aux besoins métiers des développeurs, une transparence sera de mise afin de recueillir le feedback des développeurs de communautés durant le processus de conception de cette nouvelle version de l&rsquo;Entity Framework.</font></p>
<p><font face="Tahoma" size="2">Afin d&rsquo;y arriver, un nouveau blog, appelé <a href="http://blogs.msdn.com/efdesign/default.aspx"><strong>Entity Framework Design</strong></a>, a été mis en place dans le but que l&rsquo;équipe ADO.NET puisse fournir l&rsquo;avancée sur le design du framework. En retour, vous êtes invités à donner votre avis au travers du blog afin que l&rsquo;équipe ADO.NET puisse valider ou réajuster chaque étape du design.</font></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Entity Framework et ADO.NET Data Services prévus pour VS 2008 et .NET 3.5 SP1</title>
		<link>https://blog.developpez.com/jerome/p5479/net/entity_framework_et_ado_net_data_service</link>
		<comments>https://blog.developpez.com/jerome/p5479/net/entity_framework_et_ado_net_data_service#comments</comments>
		<pubDate>Wed, 09 Apr 2008 23:30:13 +0000</pubDate>
		<dc:creator><![CDATA[Jérôme Lambert]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ADO.NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Annonc&#233; sur le blog de la team ADO.NET, Entity Framework (et son Entity Designer) ainsi que ADO.NET Data Services passeront en version RTM dans le futur SP1 de Visual Studio 2008 et .NET 3.5. Ne vous r&#233;jouissez pas trop vite, il n&#8217;est pas indiqu&#233; de sortie prochaine pour ce Service Pack. L&#8217;&#233;quipe ADO.NET recommande juste de surveiller la sortie du SP1 en version beta 1 car ce sera la derni&#232;re occasion pour remonter les &#233;ventuels [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://blogs.msdn.com/adonet/archive/2008/04/09/entity-framework-ado-net-data-services-to-ship-with-vs-2008-sp1-net-3-5-sp1.aspx" target="_blank"><font face="Tahoma" size="2">Annonc&#233; sur le blog de la team ADO.NET</font></a><font face="Tahoma" size="2">, <strong>Entity Framework</strong> (et son <strong>Entity Designer</strong>) ainsi que <strong>ADO.NET Data Services</strong> passeront en version RTM dans le futur SP1 de Visual Studio 2008 et .NET 3.5.</font></p>
<p><font face="Tahoma" size="2">Ne vous r&#233;jouissez pas trop vite, il n&rsquo;est pas indiqu&#233; de sortie prochaine pour ce Service Pack. L&rsquo;&#233;quipe ADO.NET recommande juste de surveiller la sortie du SP1 en version beta 1 car ce sera la derni&#232;re occasion pour remonter les &#233;ventuels bugs qui resteraient.</font></p>
<p><font face="Tahoma" size="2">Patience donc <img src="https://blog.developpez.com/jerome/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></font></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[TechDays 2008] ADO.NET Entity Framework</title>
		<link>https://blog.developpez.com/jerome/p5080/net/techdays_2008_ado_net_entity_framework</link>
		<comments>https://blog.developpez.com/jerome/p5080/net/techdays_2008_ado_net_entity_framework#comments</comments>
		<pubDate>Tue, 12 Feb 2008 01:17:06 +0000</pubDate>
		<dc:creator><![CDATA[Jérôme Lambert]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ADO.NET]]></category>
		<category><![CDATA[TechDays2008]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[- Matthieu Mezil &#8211; Société Winwise &#8211; Michel Perfetti &#8211; MVP C# &#8211; Société Winwise C&#8217;est avec cette première session que l&#8217;aventure TechDays 2008 a débuté. Autant je m&#8217;attendais à un sujet très intéressant, autant je pensais ne pas en apprendre autant et le tout plutôt bien expliqué. Il me semble d&#8217;ailleurs que pour Matthieu c&#8217;était la première vraie session en tant que speaker et je dois avouer que j&#8217;ai été agréablement surpris, le sujet [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><font face="Tahoma" size="2">- Matthieu Mezil &#8211; Société Winwise<br />
&#8211; Michel Perfetti &#8211; MVP C# &#8211; Société Winwise</font></p>
<p><font face="Tahoma" size="2">C&rsquo;est avec cette première session que l&rsquo;aventure TechDays 2008 a débuté.</font></p>
<p><font face="Tahoma" size="2">Autant je m&rsquo;attendais à un sujet très intéressant, autant je pensais ne pas en apprendre autant et le tout plutôt bien expliqué. Il me semble d&rsquo;ailleurs que pour Matthieu c&rsquo;était la première vraie session en tant que speaker et je dois avouer que j&rsquo;ai été agréablement surpris, le sujet avait été très bien préparé par le deux intervenants.</font></p>
<p><font face="Tahoma" size="2">Que dire de ADO.NET Entity Framework ? Tout d&rsquo;abord pour ceux qui n&rsquo;y connaissent rien du tout sur le sujet, c&rsquo;est un framework qui va permettre à tout développeur de travailler sur un <strong><em>modèle conceptuel</em></strong> et non plus sur le <strong><em>modèle relationnelle</em></strong> d&rsquo;une base de données. En gros résumé, on va manipuler des <em><strong>Data Objects</strong></em> sans se soucier du modèle relationnel. Ce fameux modèle conceptuel est appelé le <strong><em>Entity Data Model</em></strong> (<strong><em>EDM</em></strong>) et c&rsquo;est ce modèle que nous allons requêter (le plus souvent avec <strong><em>Entity SQL</em></strong> et <strong><em>Linq To Entities</em></strong>) pour interagir de manière abstraite avec la base de données.</font></p>
<p><span id="more-154"></span></p>
<p><font face="Tahoma" size="2">C&rsquo;est donc grâce à un système de mapping que cette relation entre le modèle conceptuel et la modèle relationnel va pouvoir être effectuée, mais tout ça de manière &laquo;&nbsp;transparente&nbsp;&raquo; pour le développeur mais je vous passe les détails car vous pourrez en apprendre plus via les liens fournis en fin de ce billet.</font></p>
<p><font face="Tahoma" size="2">Pour en revenir à l&rsquo;EDM, outre le fait qu&rsquo;une table en base de données devient un Data Object dans notre EDM (excepté les tables de relation), il va être possible d&rsquo;aller assez loin avec ce modèle. Dans les grandes lignes, vous aurez la possibilité de :</font></p>
<ul>
<li><font face="Tahoma" size="2">Fusionner vos tables</font></li>
<li><font face="Tahoma" size="2">Utiliser l&rsquo;héritage de différentes façon (voir <strong><em>Table per Type</em></strong> &amp; <strong><em>Table per Hierarchy</em></strong>)</font></li>
<li><font face="Tahoma" size="2">Extraire des parties communes de vos tables pour en faire des types complexes (voir <strong><em>Complex Types</em></strong>)</font></li>
<li><font face="Tahoma" size="2">Représenter vos objets grâce à des vues</font></li>
<li><font face="Tahoma" size="2">Personnaliser les requêtes SQL générées en utilisant soit vos procédures stockées, soit du SQL</font></li>
</ul>
<p><font face="Tahoma" size="2">En vrac, vous pouvez aussi accéder à un cache de tracking qui permet de connaître l&rsquo;état de chaque ligne, tracer les changements, résoudre les conflits. Vous pouvez aussi &laquo;&nbsp;compiler&nbsp;&raquo; vos requêtes (voir <strong><em>Compiled Query</em></strong>) via les délégués. Sans oublier la synchronisation qui est omniprésente.</font></p>
<p><font face="Tahoma" size="2">Voila, je me doute que ce résumé n&rsquo;est pas très digeste mais vous commencez au moins avec les mots clés sur le sujet. Les liens ci-dessous vous permettront d&rsquo;apprendre tout ce qu&rsquo;il faut savoir sur ADO.NET Entity Framework.</font></p>
<p><font face="Tahoma" size="2">A noter que le projet est toujours en beta 3 et sera normalement disponible dans sa version finale vers Juin 2008.</font></p>
<p><a href="http://blogs.msdn.com/adonet/" target="_blank"><font face="Tahoma" size="2">Blog Team ADO.NET</font></a><a href="http://msdn2.microsoft.com/en-us/library/bb399572.aspx" target="_blank"><font face="Tahoma" size="2">Documentation MSDN ADO.NET Entity Framework</font></a><br />
<a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=15DB9989-1621-444D-9B18-D1A04A21B519&amp;displaylang=en" target="_blank"><font face="Tahoma" size="2">Télécharger ADO.NET Entity Framework Beta 3</font></a><br />
<a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=D8AE4404-8E05-41FC-94C8-C73D9E238F82&amp;displaylang=en" target="_blank"><font face="Tahoma" size="2">Télécharger ADO.NET Entity Framework Tools December 2007 CTP</font></a><br />
<a href="http://blogs.msdn.com/adonet/archive/2007/12/17/the-ado-net-entity-framework-not-just-for-sql-server.aspx" target="_blank"><font face="Tahoma" size="2">Liste des providers qui seront disponibles lors de la version finale</font></a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>[TechDays 2008] ADO.NET Data Services &#8211; Astoria</title>
		<link>https://blog.developpez.com/jerome/p5086/net/techdays_2008_ado_net_data_services_asto</link>
		<comments>https://blog.developpez.com/jerome/p5086/net/techdays_2008_ado_net_data_services_asto#comments</comments>
		<pubDate>Wed, 13 Feb 2008 21:39:05 +0000</pubDate>
		<dc:creator><![CDATA[Jérôme Lambert]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ADO.NET]]></category>
		<category><![CDATA[TechDays2008]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[- Mitsu Furuta &#8211; Microsoft France &#8211; Pierre Lagarde &#8211; Microsoft France Troisième session&#8230; Troisième &#171;&#160;nouveauté&#160;&#187; et évidemment, c&#8217;est toujours en beta pour ne pas changer Microsoft Astoria&#8230; Ou plutôt ADO.NET Data Services (qui semble être le nom définitif) est un framework, respectant la technologie REST, qui permet d&#8217;exposer des sources de données sur le web sous forme de services dans le but de les requêter. Et pour une session comme celle la, des speakers [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><font face="Tahoma" size="2">- Mitsu Furuta &#8211; Microsoft France<br />
&#8211; Pierre Lagarde &#8211; Microsoft France</font></p>
<p><font face="Tahoma" size="2">Troisième session&#8230; Troisième &laquo;&nbsp;nouveauté&nbsp;&raquo; et évidemment, c&rsquo;est toujours en beta pour ne pas changer <img src="https://blog.developpez.com/jerome/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></font></p>
<p><font size="2"><font face="Tahoma"><strong><em>Microsoft Astoria</em></strong>&#8230; Ou plutôt <strong><em>ADO.NET Data Services</em></strong> (qui semble être le nom définitif) est un framework, respectant la technologie REST, qui permet d&rsquo;exposer des sources de données sur le web sous forme de services dans le but de les requêter. Et pour une session comme celle la, des speakers de marque qui sont <strong>Mitsu</strong> et <strong>Pierre Lagarde</strong>, un duo vraiment plaisant à suivre.</font></font></p>
<p><span id="more-156"></span></p>
<p><font face="Tahoma" size="2">Avec l&rsquo;introduction précédente, vous avez du tilter deux fois. Premièrement, j&rsquo;ai parlé de &laquo;&nbsp;<u>services</u>&nbsp;&raquo; ce qui signifie que <strong><em>WCF</em></strong> va être présent. Deuxièmement, j&rsquo;ai dit qu&rsquo;il allait être possible de &laquo;&nbsp;<u>requêter</u>&nbsp;&raquo; ces services et là on pense tout de suite à <strong><em>Linq</em></strong> ou plus précisément<strong><em> Linq To HTTP</em></strong> car c&rsquo;est réellement des URL qui vont être construites via Linq dans le but de récupérer des données. Pour ceux qui iront plus loin dans cette nouvelle technologie, vous apprendrez que les données renvoyées pourront être soit sous le format <strong><em>JSON</em></strong> (<em>JavaScript Object Notation</em>), soit sous le format <strong><em>Atom/App</em></strong>.</font></p>
<p><font face="Tahoma" size="2">On va donc pouvoir accéder à ces services par simple requête HTTP en passant des ordres tels que <strong><em>GET</em></strong>, <strong><em>POST</em></strong>, <strong><em>PUT</em></strong> et <strong><em>DELETE</em></strong> fournissant toutes les opération nécessaires pour <em>lire, écrire, modifier et supprimer</em> sur les données exposées au travers des services.</font></p>
<p><font face="Tahoma" size="2">Du côté des sources de données, ADO.NET Data Services se base sur l&rsquo;ADO.NET Entity Framework via l&rsquo;Entity Data Model qui offre une couche d&rsquo;asbtraction des données.</font></p>
<p><font face="Tahoma" size="2">Preuve à l&rsquo;appui, je vais vous donner un exemple extrêmement basique et sûrement pas nécessairement correcte mais le principe sera là. Imaginez qu&rsquo;un service donné expose une méthode qui permet de récupérer des clients via son interface. On pourra donc entrer l&rsquo;URL suivante dans un navigateur web:</font></p>
<p><a href="http://localhost/servicey.svc/Customers"><font face="Tahoma" size="2">http://localhost/servicey.svc/Customers</font></a></p>
<p><font face="Tahoma" size="2">Et rien qu&rsquo;en appelant cette URL, on va récupérer notre liste de clients avec leurs informations liées le tout sous format XML. Allons plus loin, on va pouvoir récupérer un client donné via son index :</font></p>
<p><a href="http://localhost/servicey/Customers(0"><font face="Tahoma" size="2">http://localhost/servicey.svc/Customers(0</font></a><font face="Tahoma" size="2">)</font></p>
<p><font face="Tahoma" size="2">Et pourquoi pas ne demander que le nom du client à l&rsquo;index 0 ?!&#8230;</font></p>
<p><a href="http://localost/servicey/Customers()/Name"><font face="Tahoma" size="2">http://localost/servicey.svc/Customers()/Name</font></a></p>
<p><font face="Tahoma" size="2">Je vais arrêter les exemples là mais le système va encore plus loin en permettant de spécifier des conditions tel que : &laquo;&nbsp;Je ne veux que les clients dont le nom commence par &lsquo;A'&nbsp;&raquo;.</font></p>
<p><font face="Tahoma" size="2">Dans l&rsquo;exemple que je viens de vous donner, j&rsquo;ai requêter mon service via des URL mais ne vous inquiétez pas car grâce à Linq To HTTP vous allez passer par un proxy pour que ce formatage d&rsquo;URL soit totalement transparent pour vous. L&rsquo;URL &laquo;&nbsp;</font><a href="http://localhost/servicey/Customers"><font face="Tahoma" size="2">http://localhost/servicey.svc/Customers</font></a><font face="Tahoma" size="2">&nbsp;&raquo; donnera en Linq : </font></p>
<p><font face="Tahoma" size="2">var q = from c in servicey.Customers<br />
           select c;</font></p>
<p><font face="Tahoma" size="2">Le résultat sera exactement le même.</font></p>
<p><font face="Tahoma" size="2">J&rsquo;espère que cet avant goût vous a donner l&rsquo;envie d&rsquo;en apprendre bien plus car ça en vaut le coup, croyez moi.</font></p>
<p><font face="Tahoma" size="2">A noter que ce framework est disponible directement avec les ASP.NET Futures.</font></p>
<p><font face="Tahoma" size="2">Les liens à ne pas rater :</font></p>
<p><a href="http://morpheus.developpez.com/adodataservices/" target="_blank"><font face="Tahoma" size="2">Présentation d&rsquo;ADO.NET Data Services</font></a><font face="Tahoma" size="2"> par notre Thomas</font><br />
<a href="http://www.asp.net/downloads/futures/" target="_blank"><font face="Tahoma" size="2">Téléchargez ASP.NET Futures July 2007</font></a><br />
<a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=15DB9989-1621-444D-9B18-D1A04A21B519&amp;displaylang=en" target="_blank"><font face="Tahoma" size="2">Téléchargez ADO.NET Entity Framework beta 3</font></a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Astuce] Résoudre les exceptions de contraintes sur les DataSet</title>
		<link>https://blog.developpez.com/jerome/p5049/net/astuce_resoudre_les_exceptions_de_contra</link>
		<comments>https://blog.developpez.com/jerome/p5049/net/astuce_resoudre_les_exceptions_de_contra#comments</comments>
		<pubDate>Fri, 08 Feb 2008 01:17:30 +0000</pubDate>
		<dc:creator><![CDATA[Jérôme Lambert]]></dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ADO.NET]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Si vous utilisez régulièrement les DataSet, vous reconnaîtrez sûrement le message suivant : Impossible d&#8217;activer les contraintes. Une ou plusieurs lignes contiennent des valeurs qui violent les contraintes de type non null, unique ou de clé externe. Ce message est lancé lorsqu&#8217;on remplit un DataSet avec des données qui ne respectent pas les contraintes définies sur le DataSet. Exemples : Violation d&#8217;unicité, Le type n&#8217;est pas le même, La taille du champ n&#8217;est pas respecté, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><font face="Tahoma" size="2">Si vous utilisez régulièrement les DataSet, vous reconnaîtrez sûrement le message suivant :</font></p>
<blockquote><p><font face="Tahoma" size="2"><em>Impossible d&rsquo;activer les contraintes. Une ou plusieurs lignes contiennent des valeurs qui violent les contraintes de type non null, unique ou de clé externe.</em></font></p></blockquote>
<p><font face="Tahoma" size="2">Ce message est lancé lorsqu&rsquo;on remplit un DataSet avec des données qui ne respectent pas les contraintes définies sur le DataSet. Exemples :</font></p>
<ul>
<li><font face="Tahoma" size="2">Violation d&rsquo;unicité,</font></li>
<li><font face="Tahoma" size="2">Le type n&rsquo;est pas le même,</font></li>
<li><font face="Tahoma" size="2">La taille du champ n&rsquo;est pas respecté,</font></li>
<li><font face="Tahoma" size="2">&#8230;</font></li>
</ul>
<p><span id="more-5"></span></p>
<p><font face="Tahoma" size="2">Et pourtant quand on reçoit cette exception de type <strong>System.Data.ConstraintException</strong>, on a pas d&rsquo;autre information dans cet objet pour déterminer la source du problème. Et c&rsquo;est vrai que je n&rsquo;ai jamais eu besoin de plus d&rsquo;information tellement mes erreurs me sautaient aux yeux en regardant les données que j&rsquo;essayais de charger dans mes DataSet. Cette façon de faire fonctionne très bien sur des petites tables mais quand on a des tables avec au minimum 20 champs, c&rsquo;est plus délicat&#8230; Comment faire dans ce cas là ?</font></p>
<p><font face="Tahoma" size="2">Les DataTable, composant votre DataSet, possèdent une méthode appelée <strong>GetErrors()</strong> qui permet tout simplement de récupérer un tableau de type <strong>DataRow</strong>. Cette liste représente chaque erreur de contrainte au sein du DataTable.</font></p>
<p><font face="Tahoma" size="2">Comme exemple, j&rsquo;ai créé une petite table &laquo;&nbsp;Clients&nbsp;&raquo; en base de données avec un champ &laquo;&nbsp;Nom&nbsp;&raquo; de type texte fixé à 20 caractères maximum.</font></p>
<p><img src="http://blog.developpez.com/media/dbaccess.jpg" width="205" height="120" alt="" /></p>
<p><font face="Tahoma" size="2">Dans mon projet sous Visual Studio, j&rsquo;ai créé un DataSet typé où j&rsquo;y ai glissé cette fameuse table &laquo;&nbsp;Clients&nbsp;&raquo; afin d&rsquo;en faire un DataTable et pour la beauté de la démo, j&rsquo;ai fixé la longueur du champ &laquo;&nbsp;Nom&nbsp;&raquo; à 10 caractères au lieu de 20.</font></p>
<p><img src="http://blog.developpez.com/media/dbdataset.jpg" width="408" height="319" alt="" /></p>
<p><font face="Tahoma" size="2">Ci-dessous, le code qui va charger les données de la base dans le DataSet :</font></p>
<p><img src="http://blog.developpez.com/media/dbcode.jpg" width="652" height="287" alt="" /></p>
<p><font face="Tahoma" size="2">Ce qui provoquera l&rsquo;exception attendue avec comme résultat à l&rsquo;écran :</font></p>
<blockquote><p><font face="Tahoma" size="2"><em>La colonne &lsquo;nom&rsquo; dépasse la limite MaxLength.<br />
La colonne &lsquo;nom&rsquo; dépasse la limite MaxLength.<br />
La colonne &lsquo;nom&rsquo; dépasse la limite MaxLength.<br />
La colonne &lsquo;nom&rsquo; dépasse la limite MaxLength.<br />
La colonne &lsquo;nom&rsquo; dépasse la limite MaxLength.</em></font></p></blockquote>
<p><font face="Tahoma" size="2">Bon développement en espérant vous avoir fait économisé quelques secondes de recherches <img src="https://blog.developpez.com/jerome/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></font></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
