2011-06-13 13 views
46

Continuo a sentire l'Entity Framework fluent-api ma non riesco a trovare un buon riferimento a questo. Che cos'è?Cos'è l'API fluente di Entity Framework?

Utilizziamo la struttura entità e lo strumento di modellazione forniti. È tutto ciò che è? O è qualcosa di diverso?

Analogamente, se non è una domanda troppo ampia, cos'è POCO? So che sta per Plain Old CLR Objects, ma cosa significa per me come qualcuno che usa EF già con lo strumento Model Designer? Se questa domanda è troppo vaga, per favore ignorala. Sto solo imparando qui e qualsiasi informazione tu voglia fornire è utile.

risposta

50

Entity Framework 4.1 introduce il primo approccio al codice di scrittura dei modelli di database. Questo è anche chiamato POCO (Plain Old CLR Objects). L'idea è che puoi costruire il tuo database da queste classi, invece di costruire il database prima e creare un modello da questo.

Ci sono un sacco di buoni articoli sul blog e documentazione MSDN su questo. Un buon punto di partenza sarebbe

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

ritiene che l'API fluente, questo è fondamentalmente utilizzando le classi EF per costruire il tuo esempio database:

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

Quindi stai affermando manualmente che la tabella Category ha una chiave primaria chiamata `CategoryCode'. È inoltre possibile dichiarare il PK in questo modo:

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

L'attributo [Key] viene da Data Annotations

+2

Jason, mi sto perdendo qualcosa di grosso, se ho deciso di utilizzare le annotazioni di dati invece di api fluente.Sto appena iniziando con MVC e questo argomento è una curva più grande per me. – Crismogram

+4

Non credo che ti stai perdendo. Ma direi che usare l'API fluente significa che puoi mettere tutta la configurazione del database in un unico metodo, piuttosto che diffonderla in attributi associati a classi diverse. Quindi è il caso in cui preferisci davvero. –

6

POCO sta per Plain Old CLR Object.

Article su API Fluent.

0

Rispondendo alla tua domanda POCO: nell'applicazione Attualmente sto lavorando su sto usando POCO di per passare i dati al il mio front-end Silverlight (EF non lo stava tagliando). Essenzialmente, io uso le entità create dal modellatore EF, le massaggio in una versione amichevole serializzabile, quindi le invio avanti e indietro sul filo. I POCO sono lì per fornire uno strato di astrazione quando necessario. Lo considero come un adattamento del pattern DAO alla serializzazione, invece di usarlo per l'accesso ai DB come avviene normalmente con il pattern DAO.

0

Si veda il paragrafo sulle classi POCO in http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

In sostanza, nel contesto di EF, le classi POCO sono classi entità che non ereditano dalla classe Entity Framework EntityObject (che è quello che si ottiene di default in Database First o modello prima). Come una delle altre risposte menziona, questo semplifica la serializzazione degli oggetti, ma anche alcune metodologie di sviluppo e test automatico preferiscono lavorare con oggetti che non hanno alcun riferimento a Entity Framework.