Quiero cambiar el nombre de una de mis tablas generadas usando Entity Framework code first.

Ya tengo creada la base de datos, pero ahora quiero cambiar el nombre. He actualizado todas las referencias a la "Metadatas" tabla "Metadata" en mi proyecto. Pero la tabla que se genera en la base de datos es todavía «etiquetas (metadatos)». Se me ha caído y se vuelve a crear la base de datos, pero que no parece funcionar bien. Tampoco el uso de un TableAttribute. Lo que estoy supone que debo hacer?

Gracias.

[Table("Metadata")]
public class Metadata 
{
    [Required, Key]
    public int MetadataId { get; set; }

    [Required, ScaffoldColumn(false)]
    public int DocumentId { get; set; }

    [Required, StringLength(250), DataType(DataType.Text)]
    public string Title { get; set; }

  • Table definitivamente debe hacer el trabajo. Asegúrese de que usted está comprobando el derecho de base de datos, no el antiguo. Pasa a todo el mundo.
InformationsquelleAutor Tums | 2014-02-09

1 Comentario

  1. 45

    Aquí tiene dos opciones-

    Anotaciones De Datos:

    //Changing database table name to Metadata
    [Table("Metadata")]
    public class Metadata 
    {
      [Required, Key]
      public int MetadataId { get; set; }
    
      [Required, ScaffoldColumn(false)]
      public int DocumentId { get; set; }
    
      [Required, StringLength(250), DataType(DataType.Text)]
      public string Title { get; set; 
    }

    o hemos Fluent Api:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
      //Changing Database table name to Metadata
      modelBuilder.Entity<Metadata>()
          .ToTable("Metadata");
    }

    El uso de la Api Fluida es la opción preferida si desea asegurarse de que su Modelo de Dominio, despejado.

    Acaba de añadir a esto, si usted solamente desea eliminar el pluralisation de sus nombres de tabla, puede reemplazar EFs capacidad para hacerlo con la siguiente línea de código:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
    • ¿Por qué es que la tabla que se ha creado en la base de datos se llama «etiquetas (metadatos)», no de «Metadatos»? Creo que es por eso que estoy confundido…
    • Entity Framework se pluralizar el nombre de la clase como la forma en que se mire, si usted tiene una clase que se llama «Perro», por ejemplo, cuando varios Perros objetos conservan en una base de datos, tendrás una colección de «Perros». Puedo ver sus problemas, aunque como Metadatos es tanto el singular y el plural. Tendrías el mismo problema si había una clase que se llama «Pez» (una tabla llamada «Fishs»).
    • Ok. Voy a conseguir. Sé que no es gran cosa, pero las «etiquetas (metadatos)» me estaba volviendo loco. Así que la forma anterior es la forma en torno a ese comportamiento? No podía llegar a la caída de la «s».
    • Yeh, ese es el camino. Me gustaría recomendar el uso de la fluidez en la versión de la api, pero tanto los métodos de trabajo
    • Creo que estoy perdiendo mi canicas….Acabo de google «Cómo cambiar el nombre de tabla de base de datos en el Marco de la Entidad», vino a esta pregunta de StackOverflow y me dí cuenta que fue la que abrió hace meses! 🙂
    • Esto va en la DBContext clase derivada, fyi
    • tu último comentario me hacen LAMO, de cualquier manera la respuesta salvó la mañana 😉

Dejar respuesta

Please enter your comment!
Please enter your name here