Entity Framework
Code cadre d'entité en premier
Recherche…
Se connecter à une base de données existante
Pour réaliser la tâche la plus simple dans Entity Framework - pour vous connecter à une base de données existante, ExampleDatabase
sur votre instance locale de MSSQL, vous devez implémenter uniquement deux classes.
La première est la classe d'entité, qui sera mappée à notre table de base de données dbo.People
.
class Person
{
public int PersonId { get; set; }
public string FirstName { get; set; }
}
La classe utilisera les conventions Entity Framework et dbo.People
table dbo.People
qui doit avoir la clé primaire PersonId
et une propriété varchar (max) FirstName
.
La seconde est la classe de contexte qui dérive de System.Data.Entity.DbContext
et qui gérera les objets d'entité pendant l'exécution, les dirigera depuis la base de données, gérera la concurrence et les enregistrera dans la base de données.
class Context : DbContext
{
public Context(string connectionString) : base(connectionString)
{
Database.SetInitializer<Context>(null);
}
public DbSet<Person> People { get; set; }
}
Veuillez noter que dans le constructeur de notre contexte, nous devons définir l'initialiseur de base de données sur null - nous ne voulons pas qu'Entity Framework crée la base de données, nous voulons simplement y accéder.
Maintenant , vous êtes en mesure de manipuler les données de cette table, par exemple , changer le FirstName
de la première personne dans la base de données à partir d' une application console comme ceci:
class Program
{
static void Main(string[] args)
{
using (var ctx = new Context("DbConnectionString"))
{
var firstPerson = ctx.People.FirstOrDefault();
if (firstPerson != null) {
firstPerson.FirstName = "John";
ctx.SaveChanges();
}
}
}
}
Dans le code ci-dessus, nous avons créé une instance de Context avec un argument "DbConnectionString". Cela doit être spécifié dans notre fichier app.config
comme ceci:
<connectionStrings>
<add name="DbConnectionString"
connectionString="Data Source=.;Initial Catalog=ExampleDatabase;Integrated Security=True"
providerName="System.Data.SqlClient"/>
</connectionStrings>