2012-04-19 16 views

Respuesta

7

no hay tutoriales lo que explicaría la API Fluido junto con Database- Primer acercamiento porque la API de Fluent se hace solo para el enfoque de Code-First. No necesita la API Fluent si desea crear su modelo a través de Database-First.

Fluent API (junto con las anotaciones y convenciones de datos Code-First) es una herramienta para definir detalles de modelo en código, como longitud de cadena, si se requiere una propiedad o el tipo de relación - many-to-many, one -to-many, etc. Al utilizar Database-First o Model-First, el archivo EDMX tiene el mismo propósito: contiene todos los detalles y las definiciones de mapeo de su modelo. Fluent API (+ anotaciones y convenciones de datos) reemplaza el archivo EDMX solo cuando se usa Code-First.

Si crea el modelo a través de Database-First o Model-First, tendrá un archivo EDMX que representa su modelo. Puede aplicar el T4 DbContext Generator a este archivo EDMX. Los archivos generados tienen dos características son diferentes de Código-Primera:

  • La cadena de conexión generado contiene una sección refiriéndose a los metadatos EDMX que será incorporado en la asamblea:

    connectionString="metadata=res://*/Model.csdl 
              |res://*/Model.ssdl 
              |res://*/Model.msl; 
            ..." 
    
  • El genera DbContext contexto tendrá un método anulado OnModelCreating que acaba de lanza una excepción:

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
        throw new UnintentionalCodeFirstException(); 
    } 
    

Mientras abandone la sección de metadatos en la cadena de conexión, EF ni siquiera llamará a OnModelCreating o cualquier código en la API Fluent en este método. La sección de metadatos le dice a EF que su modelo es DB- o Model-First y que los metadatos están definidos en el EDMX incorporado y no en la Fluent API.

Sin embargo, puede eliminar la sección de metadatos de la cadena de conexión, eliminar el UnintentionalCodeFirstException y escribir el código con la API Fluent en OnModelCreating. Puede seguir este procedimiento para crear un modelo inicial a través de Database-First y luego construir sobre este modelo inicial para un mayor desarrollo con Code-First.

En este momento ya no está trabajando con Database-First, pero Code-First y todo lo que lee sobre Fluent API es válido para usted.

+2

Voy a marcar tu publicación como respondida en un día o dos ya que ya has respondido mi pregunta original, pero si encuentras la hora, estoy aprendiendo sobre DBContext y su API de validación De todas formas, supongo que Validation API también se puede usar con Database-First, aunque Database-First no utiliza Fluent-API. – user702769

+1

@ user702769: Hm, buena pregunta ... Realmente no lo sé. Nunca utilicé la función de validación con la base de datos primero. Quizás haga una nueva pregunta sobre esto. – Slauma

+0

hará eso. Muchas gracias por su ayuda – user702769

1

Hay una publicación interesante sobre el logro de algunos de los objetivos de "Primero en la base de datos" sin emplear la metodología real de "Primero en la base de datos" per se.

http://agilenet.wordpress.com/2011/04/11/entity-framework-4-1-rc-with-an-existing-database/

El autor utiliza “Code-primero” y “API Fluido”, pero desactiva la generación automática y la siembra de bases de datos y tablas.

Él comparte una muestra que muestra "cómo crear un modelo de entidad, luego crea manualmente tu base de datos y luego asigna esas entidades a tu base de datos. Finalmente muestra usando DatabaseContext para guardar y recuperar entidades ".

La parte donde crea una "clase de configuración para cada entidad que mapea entre la entidad y la base de datos" es muy buena. Ese paso reemplaza los archivos "edmx" que se generarían cuando se emplea un enfoque formal de "Primero en la base de datos".

Cuestiones relacionadas