web-dev-qa-db-fra.com

Qu'est-ce que l'API fluent Entity Framework?

Je ne cesse d’entendre parler d’Antity Framework fluent-api mais j’ai du mal à trouver une bonne référence à ce sujet. Qu'Est-ce que c'est?

Nous utilisons le framework d'entité et l'outil de modélisation fourni. Est-ce tout ce qui est? Ou est-ce quelque chose de différent?

De même, si la question n'est pas trop large, qu'est-ce que POCO? Je sais que cela signifie Plain Old CLR Objects, mais qu'est-ce que cela signifie pour moi qui utilise déjà EF avec l'outil de modélisation de concepteur? Si cette question est trop vague, alors ignorez-la. Je viens d'apprendre ici et toute information que vous êtes prêt à fournir est utile.

51
Chev

Entity Framework 4.1 introduit la première approche du code pour écrire des modèles de base de données. Ceci est également appelé POCO (Plain Old CLR Objects). L'idée est que vous pouvez construire votre base de données à partir de ces classes, plutôt que de la créer d'abord et de créer un modèle à partir de cela.

Il existe des tonnes de bons articles de blog et de documentation MSDN à ce sujet. Un bon endroit pour commencer serait 

http://blogs.msdn.com/b/adonet/archive/2010/12/14/ef-feature-ctp5-fluent-api-samples.aspx

http://weblogs.asp.net/scottgu/archive/2010/12/08/announcing-entity-framework-code-first-ctp5-release.aspx

http://weblogs.asp.net/manavi/archive/2011/03/27/associations-in-ef-4-1-code-first-part-1-introduction-and-basic-concepts.aspx

En ce qui concerne l’API fluide, il s’agit essentiellement des classes EF pour construire votre base de données, par exemple:

modelBuilder.Entity<Category>().HasKey(c => c.CategoryCode);

Vous déclarez donc manuellement que la table Category a une clé primaire appelée `CategoryCode '. Vous pouvez également déclarer le PK comme ceci:

public class Category
{
    [Key]    
    public int CategoryCode { get; set;}
}

L'attribut [Key] provient de Data Annotations

55
Jason Evans

POCO signifie Plain Old CLR Object.

Article sur l'API Fluent.

5
Xaisoft

Vous pouvez également consulter la section Code First Fluent API sur MSDN ici http://msdn.Microsoft.com/en-us/library/hh295844

En réponse à votre question POCO: dans l'application sur laquelle je travaille actuellement, j'utilise des POCO pour transmettre des données à mon frontal Silverlight (EF ne les coupait tout simplement pas). Pour l’essentiel, j’utilise les entités créées par le modélisateur EF, les transforme en une version facile à sérialiser, puis les envoie par l’intermédiaire du réseau filaire. Les POCO sont là pour fournir une couche d'abstraction en cas de besoin. Je pense qu’il s’agit d’une adaptation du modèle DAO à la sérialisation, au lieu de l’utiliser pour l’accès à la base de données comme le modèle DAO le fait normalement.

0
Eric Andres

Voir le paragraphe sur les classes POCO dans http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

Dans le contexte de EF, les classes POCO sont essentiellement des classes d'entité qui n'héritent pas de la classe EntityObject de Entity Framework (ce que vous obtenez par défaut dans Database First ou Model First). Comme le mentionne l'une des autres réponses, cela facilite la sérialisation des objets, mais certaines méthodologies de développement et de tests automatisés préfèrent travailler avec des objets qui ne font pas référence à Entity Framework.

0
tdykstra