2011-06-18 22 views
9

Mi código me está dando una EntityCommandExecutionException cuando intento obtener datos de mi Bieren Table.EntityFramework usando el nombre de tabla incorrecto

El mensaje de excepción dice que no puede encontrar "dbo.Biers", que es bastante obvio porque se llama "dbo.Bieren".

Puedo solucionarlo fácilmente simplemente cambiando el nombre de la tabla en la base de datos. Aunque no me gusta arreglar mi base de datos en torno a los errores de mi código.

¿Cómo puedo hacer que el marco de entidades use la tabla correcta en lugar de cambiar el nombre de mi tabla?

Gracias de antemano.

+0

hace la excepción dicen dbo.Biers o dbo.Bierens? –

+0

dice "dbo.Biers" –

Respuesta

8

Para la primera base de datos, la solución de StriplingWarrior funciona bien. Pero si utiliza el enfoque de primer código, podría usar System.ComponentModel.DataAnnotations.TableAttribute en una clase de entidad de destino para asignar una clase de entidad a una tabla de base de datos.

Sin embargo, de esta manera es un poco molesto, porque comúnmente queremos definir una clase de entidad pura. Para hacerlo, puede confiarlo a otra clase o usar el método OnModelCreating modificado en la clase DbContext de la siguiente manera.

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Category>() 
     .ToTable("MyCategories"); 
    } 
+1

¡Gran cosa, señor! ¡Muchas gracias! –

5

Su modelo de Entity Framework tiene información sobre los nombres de las tablas y las conexiones a las que se está conectando. Si está utilizando un enfoque basado en la base de datos, debe tener un archivo EDMX con su modelo de base de datos. La forma más fácil es actualizar el modelo desde la base de datos.

  1. Abrir el archivo EDMX en Visual Studio
  2. Eliminar la tabla "Biers" incorrectas
  3. haga clic derecho en el fondo y haga clic en "Actualización del Modelo de base de datos"
  4. punto el asistente en su base de datos, y seleccione la tabla "Bieren" para añadir
  5. finalice el asistente, y la mesa "Bieren" debe aparecer

también es posible profundizar en el propiedades del tipo de Biers, y cambiar manualmente el nombre de la tabla.

+0

¡Gracias por su rápida respuesta! Pero no estoy usando el primer enfoque de DataBase. Estoy usando una variación en el código-first donde asocio mis clases modelo con una base de datos existente. (Soy titular de MVC3 y EF4, lo obtuve de un libro). ¿Hay alguna manera de solucionar esto con el enfoque de codificar primero? –

+0

@ Wesz-T: Parece que jwJung me ganó. Aclamaciones. – StriplingWarrior

+0

@StriplingWarrior Hola stripling, ¿sabes cómo podría hacer esto con una tabla que solo se utiliza para las relaciones (para muchos a muchos)? No aparece en edmx como un objeto seleccionable ya que otras tablas lo hacen – Bassie

7

Decora tu clase de entidad con la propiedad TableAttribute, p.

[Table("Bieren")] 
Cuestiones relacionadas