Création d'une application Entity Framework (SQL Server Compact)
Cette rubrique fournit des instructions pas à pas pour la création d'applications Entity Framework qui utilisent la base de données SQL Server Compact comme source de données.
Pour créer une nouvelle application Entity Framework
Dans Visual Studio, dans le menu Fichier, pointez sur Nouveau, puis sélectionnez Projet.
Dans la liste Types de projets de la boîte de dialogue Nouveau projet, développez le langage de programmation à utiliser, puis sélectionnez Visual C# ou Visual Basic.
Dans la liste Modèles, sélectionnez Application console.
Indiquez un nom (tel que SQLCompactEDMProject) et un emplacement pour votre projet, puis cliquez sur OK.
Pour générer le modèle Entity Data Model pour Northwind.sdf, copiez Northwind.sdf du dossier %ProgramFiles%\Microsoft SQL Server Compact Edition\v3.5\Samples vers le dossier de votre projet.
Dans le menu Projet, cliquez sur Ajouter un nouvel élément.
Dans le volet Modèles, sélectionnez Modèle de données d'entité ADO.NET.
Tapez Northwind.edmx comme nom de modèle, puis cliquez sur Ajouter.
La première page de l'Assistant EDM (Entity Data Model) s'affiche.
Dans la boîte de dialogue Choisir un contenu de modèle, sélectionnez Générer à partir d'une base de données. Cliquez ensuite sur Suivant.
Cliquez sur le bouton Nouvelle connexion.
Dans la boîte de dialogue Propriétés de connexion, cliquez sur Modifier dans Source de données. Sélectionnez Microsoft SQL Server Compact 3.5, naviguez jusqu'à Northwind.sdf, puis cliquez sur OK.
La boîte de dialogue Choisir votre connexion de données est mise à jour avec vos paramètres de connexion à la base de données.
Assurez-vous que la case à cocher Enregistrer les paramètres de connexion d'entité d'App.Config sous est activée et que la valeur définie est NorthwindEntities. Cliquez ensuite sur Suivant.
Dans la boîte de dialogue Choisir vos objets de base de données, effacez tous les objets, développez Tables et sélectionnez Customers comme objet de table :
Tapez NorthwindModel comme Espace de noms de Model.
Cliquez sur Terminer pour terminer l'Assistant.
L'Assistant effectue les opérations suivantes :
Ajout de références aux assemblys System.Data.Entity.dll, System.Runtime.Serialization.dll et System.Security.dll.
Génération du fichier Northwind.edmx qui définit le modèle EDM.
Création d'un fichier de code source contenant les classes qui ont été générées sur la base du modèle EDM. Vous pouvez afficher le fichier de code source en développant le fichier .edmx dans l'Explorateur de solutions.
Création d'un fichier App.Config.
Double-cliquez sur le fichier de configuration d'application du projet (app.config) et assurez-vous que provider=System.Data.SqlServerCe.3.5 dans la chaîne de connexion.
Dans la page de codes de votre application, ajoutez les instructions suivantes :
C# :
using NorthwindModel;
Visual Basic :
Imports SQLCompactEDM.NorthwindModel
Notez que le nom du modèle correspond à la valeur de l'espace de noms spécifiée dans le fichier Northwind.edmx.
Copiez l'exemple de code suivant dans votre fichier de code. Pour finir, compilez et exécutez.
Important
L'assembly System.Data.Entity.dll fait partie de la version SP1 du .NET Framework version 3.5. Des rubriques de référence managée pour l'assembly System.Data.Entity sont disponibles dans la documentation Entity Framework.
Exemple
L'exemple de code suivant fournit trois requêtes Entity Framework simples dans la base de données SQL Server Compact Northwind.sdf :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.EntityClient;
using System.Data;
using NorthwindModel;
namespace SQLCompactEDMProject
{
class SSC_EntityFrameworkExample
{
static void Main(string[] args)
{
Console.WriteLine(
"SQL Server Compact and Northwind Entity Framework Sample:");
try
{
// Establish a connection to the underlying data provider by
// using the connection string specified in the config file.
using (EntityConnection connection =
new EntityConnection("Name = NorthwindEntities"))
{
// Open the connection.
connection.Open();
// A simple query that demonstrates
// how to use Entity SQL for entities.
Console.WriteLine("\nEntity SQL Query:");
ESQL_Query(connection);
// A simple query that demonstrates
// how to use LINQ to Entities.
// A new connection is established by using the connection
// string in the App.Config file.
Console.WriteLine("\nLINQ To Entity Query:");
LINQ_To_Entity_Query();
// A simple query that demonstrates how to use ObjectContext
// on data objects with an existing connection.
Console.WriteLine("\nObject Query:");
ObjectQuery(connection);
// Close the connection.
connection.Close();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
// A simple query that demonstrates how to use
// Entity SQL query for entities.
private static void ESQL_Query(EntityConnection entityConnection)
{
EntityCommand entityCommand = entityConnection.CreateCommand();
entityCommand.CommandText =
@"Select Cust.Customer_Id as Id from NorthwindEntities.Customers as Cust order by Cust.Customer_Id";
EntityDataReader entityDataReader =
entityCommand.ExecuteReader(CommandBehavior.SequentialAccess);
while (entityDataReader.Read())
{
for (int i = 0; i < entityDataReader.FieldCount; i++)
Console.Write(entityDataReader[i].ToString() + "\t");
Console.WriteLine();
}
}
// A simple LINQ query on the Customers entity set in the Northwind
// Context.
// The code example creates a new Northwind Context based on the
// settings provided in the App.Config File.
private static void LINQ_To_Entity_Query()
{
using (NorthwindEntities nwEntities = new NorthwindEntities())
{
IQueryable<string> customers =
from c in nwEntities.Customers select c.Company_Name;
foreach (String c in customers)
{
Console.WriteLine(c);
}
}
}
// The ObjectContext provides access to the collections of data used
// by applications.
// The following code shows how to open a connection to the
// ObjectContext named NorthwindEntities.
// With the application configuration file in scope the connection
// can be opened with one line of code:
// NorthwindEntities nwEntities = new NorthwindEntities(entityConnection).
private static void ObjectQuery(EntityConnection entityConnection)
{
using (NorthwindEntities nwEntities = new
NorthwindEntities(entityConnection))
{
foreach (Customers c in nwEntities.Customers)
{
Console.WriteLine(c.Company_Name);
}
}
}
}
}
Imports System.Data.EntityClient
Imports SQLCompactEDM.NorthwindModel
Module Module1
Sub Main()
Console.WriteLine("SQL Server Compact and Northwind Entity Framework Sample:")
Try
Using connection As EntityConnection = _
New EntityConnection("Name = NorthwindEntities")
' Open the connection.
connection.Open()
' A simple query that demonstrates how to use ESQL for entities.
Console.WriteLine(vbNewLine & "ESQL Query:")
ESQL_Query(connection)
' A simple query that demonstrates how to use LINQ to Entities.
' A new connection is established by using the
' connection string in the App.Config file.
Console.WriteLine(vbNewLine & "LINQ To Entity Query:")
LINQ_To_Entity_Query()
' A simple query that demonstrates how to use ObjectContext
' on data objects with an existing connection.
Console.WriteLine(vbNewLine & "Object Query:")
ObjectQuery(connection)
' Close the connection.
connection.Close()
End Using
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Sub
' A simple query that demonstrates how to use ESQL for entities.
Private Sub ESQL_Query(ByVal entityConnection As EntityConnection)
Dim entityCommand As EntityCommand = entityConnection.CreateCommand
entityCommand.CommandText = _
"Select Cust.Customer_Id as Id from NorthwindEntities.Customers as Cust order by Cust.Customer_Id"
Dim entityDataReader As EntityDataReader = _
entityCommand.ExecuteReader(CommandBehavior.SequentialAccess)
Do While entityDataReader.Read
Dim i As Integer
For i = 0 To entityDataReader.FieldCount - 1
Console.Write((entityDataReader.Item(i).ToString & vbTab))
Next i
Console.WriteLine()
Loop
End Sub
' A simple LINQ query on the Customers entity set in the Northwind Context.
' The code example creates a new Northwind Context based on the
' settings provided in the App.Config File.
Private Sub LINQ_To_Entity_Query()
Using nwEntities As NorthwindEntities = New NorthwindEntities
Dim customers = From c In nwEntities.Customers Select c.Company_Name
For Each c In customers
Console.WriteLine(c)
Next
End Using
End Sub
' The ObjectContext provides access to the collections of data used by applications.
' The following code shows how to open a connection to the ObjectContext named NorthwindEntities.
' With the application configuration file in scope the connection can be opened with one line of code:
' NorthwindEntities nwEntities = new NorthwindEntities(entityConnection).
Private Sub ObjectQuery(ByVal entityConnection As EntityConnection)
Using nwEntities As NorthwindEntities = New NorthwindEntities(entityConnection)
Dim c As Customers
For Each c In nwEntities.Customers
Console.WriteLine(c.Company_Name)
Next
End Using
End Sub
End Module