<?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>Technologies .NET et conseils de développement &#187; Visual Studio 2010</title>
	<atom:link href="https://blog.developpez.com/johangard/pcategory/visual-studio/visual-studio-2010/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/johangard</link>
	<description></description>
	<lastBuildDate>Sun, 31 Jul 2011 16:53:20 +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>Création d&#8217;un modèle à partir d&#8217;une base de données</title>
		<link>https://blog.developpez.com/johangard/p10168/visual-studio/visual-studio-2010/entity-framework-4-0/creation_d_un_modele_a_partir_d_une_base</link>
		<comments>https://blog.developpez.com/johangard/p10168/visual-studio/visual-studio-2010/entity-framework-4-0/creation_d_un_modele_a_partir_d_une_base#comments</comments>
		<pubDate>Sun, 31 Jul 2011 16:53:20 +0000</pubDate>
		<dc:creator><![CDATA[jgard]]></dc:creator>
				<category><![CDATA[Entity Framework 4.0]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Entity Framework est l&#8217;ORM propose par Microsoft pour le .NET. Cette technologie est apparue avec le framework 3.5 SP1. Cette première version a laissé un goût de (beaucoup) trop peu. Il y avait de bonnes idées mais pour arriver à un résultat correct en termes de performance et de gestion d&#8217;états, il fallait souvent contourner le fonctionnement normal et aller redéfinir les basses couches du framework. Ceci impliquait un temps de développement accru alors que [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Entity Framework est l&rsquo;ORM propose par Microsoft pour le .NET. Cette technologie est apparue avec le framework 3.5 SP1. Cette première version a laissé un goût de (beaucoup) trop peu. Il y avait de bonnes idées mais pour arriver à un résultat correct en termes de performance et de gestion d&rsquo;états, il fallait souvent contourner le fonctionnement normal et aller redéfinir les basses couches du framework. Ceci impliquait un temps de développement accru alors que le but d&rsquo;un ORM est de réduire considérablement le temps passé sur la DAL. Mais rassurez-vous, la nouvelle mouture est arrivée avec beaucoup de corrections de bugs, des performances accrues et des facilités pour la gestion des entités. Nous verrons tout cela dans différents articles mais revenons d&rsquo;abord à ce qui nous intéresse : la création d&rsquo;un modèle à partie d&rsquo;une base de données.
</p>
<p>Le modèle est un fichier à ajouter à votre projet. Il possède une extension <em>edmx</em> et est lié à un fichier <em>cs</em> (ou <em>vb</em>) dans lequel est généré le code. Ajoutez donc ce type de fichier à votre projet en le choisissant dans la liste sous la catégorie <em>Data</em> (Figure 1).
</p>
<p><img src="http://johangard.files.wordpress.com/2011/07/072611_1905_introductio1.jpg" alt="" />
	</p>
<p><span style="color:#4f81bd;font-size:9pt;"><strong>Figure 1<br />
</strong></span></p>
<p>Un assistant se lance pour vous aider à paramétrer le modèle. Le premier écran vous propose de générer le modèle à partir d&rsquo;une base de données ou de créer un modèle vide (Figure 2). Nous choisirons ici la première option.
</p>
<p><img src="http://johangard.files.wordpress.com/2011/07/072611_1905_introductio2.jpg" alt="" />
	</p>
<p><span style="color:#4f81bd;font-size:9pt;"><strong>Figure 2<br />
</strong></span></p>
<p>Vient ensuite la configuration de la connexion à la base de données. Il s&rsquo;agit de l&rsquo;écran classique que l&rsquo;on rencontre lorsque l&rsquo;on configure une connexion (Figure 3). Vous devez donc sélectionner une connexion existante ou en créer une nouvelle en choisissant le serveur et la base de données. Cochez ou décochez la case permettant de conserver la connexion dans le fichier de configuration et cliquez sur le bouton <em>Next</em>.
</p>
<p><img src="http://johangard.files.wordpress.com/2011/07/072611_1905_introductio3.jpg" alt="" />
	</p>
<p><span style="color:#4f81bd;font-size:9pt;"><strong>Figure 3<br />
</strong></span></p>
<p>Nous arrivons déjà à la dernière étape. L&rsquo;écran vous affiche la liste des tables, vues et procédures stockées présentes dans la base de données choisie (Figure 4). Cochez les éléments que vous voulez inclure dans votre modèle Entity Framework. Deux autres options sont mises à disposition. La première vous permet de singulariser ou pluraliser les noms des entités et des tables de manière automatique. Qu&rsquo;est-ce que cela signifie ? Prenons un exemple. Si vous avez une table <em>People</em> dans la base de données, l&rsquo;EntitySet portera le nom <em>People</em> également. En revanche, le nom de la classe sera <em>Person</em>. On garde donc bien la logique de la programmation avec un nom singulier pour les classes et un nom pluriel pour les collections.
</p>
<p>La seconde option vous propose simplement d&rsquo;inclure les champs de clés étrangères dans votre modèle.
</p>
<p><img src="http://johangard.files.wordpress.com/2011/07/072611_1905_introductio4.jpg" alt="" />
	</p>
<p><span style="color:#4f81bd;font-size:9pt;"><strong>Figure 4<br />
</strong></span></p>
<p>Une fois que tout est configure, cliquez sur le bouton <em>Finish</em> et attendez que la génération soit terminée.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Connect to a Team Foundation Server</title>
		<link>https://blog.developpez.com/johangard/p9753/team-foundation-server-2010/connect_to_a_team_foundation_server</link>
		<comments>https://blog.developpez.com/johangard/p9753/team-foundation-server-2010/connect_to_a_team_foundation_server#comments</comments>
		<pubDate>Sun, 13 Feb 2011 18:06:12 +0000</pubDate>
		<dc:creator><![CDATA[jgard]]></dc:creator>
				<category><![CDATA[Team Foundation Server 2010]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Before any advanced action, you first need to connect Visual Studio to a Team Foundation Server. So go to the Team menu and select Connect to Team Foundation Server as indicated in Figure 1. A first window opens up asking you to select a Team Foundation Server (Figure 2). If no server was configured before, then you will have to configure one by clicking the Servers button in the top right corner of the window. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Before any advanced action, you first need to connect Visual Studio to a Team Foundation Server. So go to the <em>Team</em> menu and select <em>Connect to Team Foundation Server</em> as indicated in Figure 1.</p>
<p><img src="http://blog.developpez.com/media/01 - Menu.jpg" width="453" height="69" alt="Figure 1 - Connect to Team Foundation Server Menu" /></p>
<p>A first window opens up asking you to select a Team Foundation Server (Figure 2). If no server was configured before, then you will have to configure one by clicking the <em>Servers</em> button in the top right corner of the window. Otherwise you just have to choose the server from the list and check the collection and projects you want to connect to.</p>
<p><img src="http://blog.developpez.com/media/02 - Connect to Team Project.jpg" width="638" height="396" alt="Figure 2 - Connect to Team Project" /></p>
<p>A second window opens up listing all configured Team Foundation Servers with their names and addresses (Figure 3). To configure a new server, click the <em>Add</em> button in the top right corner of the window.</p>
<p><img src="http://blog.developpez.com/media/03 - Add-Remove Server.jpg" width="652" height="413" alt="Figure 3 - Add/Remove Team Foundation Server" /></p>
<p>Here comes the configuration window that will allow you to find your Team Foundation Server. As you can see in Figure 4, different parameters are available to find it. You can either enter the full URL or specify all parameters separately, that is the name, path, port number and protocol. When you are done, click the <em>OK</em> button. If the server cannot be found, then an error message will be displayed.</p>
<p><img src="http://blog.developpez.com/media/04 - Add Server.jpg" width="462" height="294" alt="Figure 4 - Add Team Foundation Server" /></p>
<p>You now see that the newly configured server mapping has been added to the list of the previous window (Figure 5). Select it if it is not done yet and click the <em>Close</em> button.</p>
<p><img src="http://blog.developpez.com/media/05 - Added Server.jpg" width="653" height="416" alt="Figure 5 - Select Server" /></p>
<p>You are now one step away from the end of the process. The server you have just configured now appears in the list. Once you select it, you will see the list of all Team Project Collections present on the server along with all their associated Team Projects (Figure 6). All you have to do is to select the collection you want to work on and, if you want to work with existing projects, you might want to select them too. When you are ready, click the Connect button. Congratulations! Your Visual Studio is now connected to a Team Foundation Server.</p>
<p><img src="http://blog.developpez.com/media/06 - Select Collection.jpg" width="639" height="397" alt="Figure 6 - Select Team Project Collection" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Import d&#8217;une procédure stockée</title>
		<link>https://blog.developpez.com/johangard/p9341/visual-studio/visual-studio-2010/entity-framework-4-0/import_d_une_procedure_stockee</link>
		<comments>https://blog.developpez.com/johangard/p9341/visual-studio/visual-studio-2010/entity-framework-4-0/import_d_une_procedure_stockee#comments</comments>
		<pubDate>Sat, 02 Oct 2010 13:36:35 +0000</pubDate>
		<dc:creator><![CDATA[jgard]]></dc:creator>
				<category><![CDATA[Entity Framework 4.0]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[En plus de l&#8217;import de tables, Entity Framework vous permet bien entendu d&#8217;importer des procédures stockées. Voici comment faire : &#8211; Tout d&#8217;abord, veillez à sélectionner les procédures que vous voulez importer lorsque vous créez ou mettez à jour votre modèle à partir de la base de données : &#8211; Une fois les procédures dans le SSDL, il suffit de les importer dans le CSDL. Pour cela, on peut passer directement par le designer : [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>En plus de l&rsquo;import de tables, Entity Framework vous permet bien entendu d&rsquo;importer des procédures stockées.<br />
Voici comment faire :</p>
<p>&#8211; Tout d&rsquo;abord, veillez à sélectionner les procédures que vous voulez importer lorsque vous créez ou mettez à jour votre modèle à partir de la base de données :</p>
<p><img src="http://blog.developpez.com/media/Database Objects.jpg" width="625" height="556" alt="" /></p>
<p>&#8211; Une fois les procédures dans le SSDL, il suffit de les importer dans le CSDL. Pour cela, on peut passer directement par le designer :</p>
<p><img src="http://blog.developpez.com/media/Add Function Import.jpg" width="515" height="122" alt="Add Function Import" /></p>
<p><img src="http://blog.developpez.com/media/Add Function Import Box.jpg" width="520" height="620" alt="Add Function Import Dialog Box" /></p>
<p>&#8211; Vous pouvez vérifier dans le Model Browser que votre fonction a bien été créée :</p>
<p><img src="http://blog.developpez.com/media/Function Import Model Browser.jpg" width="272" height="295" alt="Model Browser" /></p>
<p>Et le tour est joué. Il ne vous reste plus qu&rsquo;à appeler cette fonction directement à partir de votre contexte pour en obtenir le résultat.</p>
<p>Petite remarque cependant, les Complex Types ne sont pas supportés dans le mapping de fonctions.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Création de Complex Types en mode Design</title>
		<link>https://blog.developpez.com/johangard/p8907/visual-studio/visual-studio-2010/entity-framework-4-0/creation_de_complex_types_en_mode_design</link>
		<comments>https://blog.developpez.com/johangard/p8907/visual-studio/visual-studio-2010/entity-framework-4-0/creation_de_complex_types_en_mode_design#comments</comments>
		<pubDate>Thu, 02 Sep 2010 08:50:56 +0000</pubDate>
		<dc:creator><![CDATA[jgard]]></dc:creator>
				<category><![CDATA[Entity Framework 4.0]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Un Complex Type est une propriété non scalaire d&#8217;une entité qui peut contenir elle-même des propriétés scalaires ou d&#8217;autres Complex Types. Par exemple, l&#8217;entité suivante : On peut considérer que les champs Firstname et Lastname sont très liés et pourraient être regroupés dans un champ Name. C&#8217;est ce que l&#8217;on appelle un Complex Type. Autrefois, la création de Complex Types n&#8217;était pas supportée par l&#8217;Entity Model Designer, nous obligeant donc à passer par le mode [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Un Complex Type est une propriété non scalaire d&rsquo;une entité qui peut contenir elle-même des propriétés scalaires ou d&rsquo;autres Complex Types.<br />
Par exemple, l&rsquo;entité suivante : </p>
<p><img src="http://blog.developpez.com/media/EF Complex Type Step 1.jpg" width="158" height="185" alt="EF Complex Type Entity" /></p>
<p>On peut considérer que les champs Firstname et Lastname sont très liés et pourraient être regroupés dans un champ Name. C&rsquo;est ce que l&rsquo;on appelle un Complex Type.</p>
<p>Autrefois, la création de Complex Types n&rsquo;était pas supportée par l&rsquo;Entity Model Designer, nous obligeant donc à passer par le mode XML dans lequel il est parfois difficile de s&rsquo;y retrouver. Le problème est maintenant réglé avec la version 4.0.<br />
Voyons tout de suite comment procéder en reprenant notre exemple :</p>
<p>Avant tout, il faut sélectionner les différents champs de l&rsquo;entité qui formeront le Complex Type. Dans notre cas, il s&rsquo;agit de Firstname et Lastname. Ensuite, dans le menu contextuel, nous pouvons trouver la nouvelle action permettant de regrouper nos champs :</p>
<p> <img src="http://blog.developpez.com/media/EF Complex Type Step 2.jpg" width="443" height="374" alt="" /></p>
<p>Il ne reste plus qu&rsquo;à renommer le Complex Type et le tour est joué. Le nouveau champ apparaît dans le Model Browser et les deux propriétés scalaires sont bien remplacées par le Complex Type dans l&rsquo;entité : </p>
<p><img src="http://blog.developpez.com/media/EF Complex Type Step 3.jpg" width="577" height="273" alt="" /></p>
<p>Le mapping est également impacté comme on peut le voir ici : </p>
<p><img src="http://blog.developpez.com/media/EF Complex Type Step 4 - Mapping.jpg" width="517" height="269" alt="Complex Type Mapping" /></p>
<p>Le Complex Type devient en fait une classe contenant nos deux propriétés d&rsquo;origine. Lorsque l&rsquo;on créera une nouvelle entité Person, il sera donc nécessaire de créer une instance de cette classe si l&rsquo;on veut accéder aux valeurs des champs.<br />
Pour terminer, voyons comment utiliser cette nouvelle propriété.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Person person = new Person(); <br />
person.Name = new Name(); <br />
person.Name.Firstname = &quot;John&quot;; <br />
person.Name.Lastname = &quot;Doe&quot;;</div></div>
<p>A savoir qu&rsquo;il est tout à fait possible de donner des noms différents à la classe et à la propriété.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gestion des clés étrangères</title>
		<link>https://blog.developpez.com/johangard/p8914/visual-studio/visual-studio-2010/entity-framework-4-0/gestion_des_cles_etrangeres</link>
		<comments>https://blog.developpez.com/johangard/p8914/visual-studio/visual-studio-2010/entity-framework-4-0/gestion_des_cles_etrangeres#comments</comments>
		<pubDate>Thu, 02 Sep 2010 08:50:26 +0000</pubDate>
		<dc:creator><![CDATA[jgard]]></dc:creator>
				<category><![CDATA[Entity Framework 4.0]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[La gestion des clés étrangères posait de gros problèmes dans la version précédente. Il était en effet impossible d&#8217;avoir une relation entre deux entités tout en gardant la clé étrangère dans les propriétés, la raison étant que le champ était mappé à la fois comme clé de la relation et comme propriété de l&#8217;entité. Il fallait donc faire un choix. Fort heureusement, ce problème n&#8217;existe plus dans la version 4.0, les deux mappings peuvent donc [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>La gestion des clés étrangères posait de gros problèmes dans la version précédente. Il était en effet impossible d&rsquo;avoir une relation entre deux entités tout en gardant la clé étrangère dans les propriétés, la raison étant que le champ était mappé à la fois comme clé de la relation et comme propriété de l&rsquo;entité. Il fallait donc faire un choix.<br />
Fort heureusement, ce problème n&rsquo;existe plus dans la version 4.0, les deux mappings peuvent donc cohabiter dans notre modèle.<br />
Pour cela, il suffit de cocher une simple case lors de la création de la relation :</p>
<p><img src="http://blog.developpez.com/media/Add Association Dialog Box.JPG" width="501" height="558" alt="Figure 1" /></p>
<p>Si cette case n&rsquo;a pas été cochée lors de la création de l&rsquo;association, il est malgré tout toujours possible de marquer une propriété comme étant une clé étrangère. Pour cela, il suffit de double-cliquer sur l&rsquo;association en mode design, ce qui fait apparaître la fenêtre suivante : </p>
<p><img src="http://blog.developpez.com/media/Referential Constraint.jpg" width="533" height="304" alt="" /></p>
<p>Il ne vous reste plus qu&rsquo;à spécifier les tables et propriétés qui entrent en jeu dans cette relation.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
