<?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; Entity Framework</title>
	<atom:link href="https://blog.developpez.com/jerome/pcategory/net/ado-net/entity-framework/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>
	</channel>
</rss>
