Pregunta

Estoy simplemente tomando una grieta en el código marco de la entidad en primer lugar. Después de su convención de nombres, ahora tenemos que nombrar nuestras mesas plurales a no tener que intervenir con la herramienta. Sé que las asignaciones pueden ser montados sobre. Mi pregunta es, después de años de seguir la convención de nombres singulares son que volver a utilizar los nombres plurales?

Además, me preguntaba por qué los nuevos ejemplos utilizaban Neptuno en lugar de Adventure Works. Estoy pensando que la razón es porque AW utiliza denominación singular y que no sería capaz de mostrar las características no hay código

¿Fue útil?

Solución

La versión RTM de Primera Código apoyará plenamente una función interesante llamado Convenciones conectables donde se puede añadir o sustituir las convenciones por defecto como la que usted ha mencionado.

Afortunadamente, lo que busca ya está incluido en CTP5. Puede apagar el pluralizante convención nombres de tabla con la eliminación de PluralizingTableNameConvention convención. Esto es todo el código que necesita escribir para este asunto:

using System.Data.Entity.ModelConfiguration.Conventions.Edm.Db;

protected override void OnModelCreating(ModelBuilder modelBuilder)
{    
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}


Sobre sus preguntas secound, la razón por la que más ver la base de datos Northwind de Adventure Works es sólo porque AW es una enorme y Neptuno es bastante pequeña base de datos de ahí que sea un mejor ajuste para las muestras y tutoriales. Dicho esto, usted todavía tiene que escribir algo de código para trabajar con la base de datos Northwind en el Código de Primera.

Otros consejos

aquí es un extracto del código que estoy usando y está funcionando al 100%. Intenta copiar y pegar y probarlo, debe crear nombres de tabla nombre singulares. Estoy usando EF4.1 y CE4.0

clase POCO

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace CloudOne.Models
{
    public class Brand
    {
        public int BrandID { get; set; }
        [MaxLength(25)]
        [Required]
        public string BrandName { get; set; }
        [MaxLength(1000)]
        public string BrandDescription { get; set; }
        public int SortOrder { get; set; }
        //SEO
        [MaxLength(70)]
        public string PageTitle { get; set; }
        [MaxLength(100)]
        public string MetaDescription { get; set; }
        [MaxLength(150)]
        public string MetaKeywords { get; set; }
        [MaxLength(56)] //50 + "-" + 99,000
        public string Slug { get; set; }
    }
}

Contexto de datos

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;

namespace CloudOne.Models
{
    public class SiteDataContext: DbContext
    {
        public DbSet<Brand> Brands { get; set; }

        // Twist our database
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
            base.OnModelCreating(modelBuilder);
        }
    }
}

La semilla inicializador

public class SiteDataContextInitializer: DropCreateDatabaseIfModelChanges<SiteDataContext>
    {
        protected override void Seed(SiteDataContext context)
        {
            var brands = new List<Brand>()
            {
                new Brand { BrandName = "Brand 1", Slug = "brand-1" },
                new Brand { BrandName = "Brand 2", Slug = "brand-2" }
            };

            brands.ForEach(d => context.Brands.Add(d));

            base.Seed(context);
        }
    }

Trate de copiar y pegar este código, a continuación, escribir un código para activar la creación de bases de datos (es decir, tratar de buscar los registros y mostrar en la página de índice).

he intentado y es como EF4 CTP5 está ignorando totalmente. ¿Qué puede estar mal?

usando sección:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration;
using System.Data.Entity.ModelConfiguration.Conventions.Edm;

DbContext:

public class SiteDataContext : DbContext
    {
        public DbSet<Blog> Blogs { get; set; }
        public DbSet<BlogFeedback> BlogFeedbacks { get; set; }
        public DbSet<BlogCategoryList> BlogCategoryLists { get; set; }
        public DbSet<BlogCategory> BlogCategories { get; set; }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingEntitySetNameConvention>();
            base.OnModelCreating(modelBuilder);
        }
    }

clases POCO

public class Blog
    {...}
public class BlogFeedback
    {...}
public class BlogCategoryList
    {...}
public class BlogCategory
    {...}

Tablas generado:

Blogs
BlogCategories
BlogCategoryLists
BlogFeedbacks

Lo que necesito:

Blog
BlogCategory
BlogCategoryList
BlogFeedback

Una cosa puede ser diferente es divido mi solución en dos proyectos básicos y Web. Núcleo tiene Modelos, servicios y toda Primer Código. Web tiene sólo controladores y vistas y una referencia a la base. El SetInitializer (). Semillas () es una función dentro de la base, y en Web Global.asax la Core.SetInitializer se llama, a fin de mantener todas las funciones dentro de CTP5 Core. La base de datos está siendo recreado bien, los datos se llena bien, sólo la convención de nombres de tabla mantiene plurales, haciendo caso omiso de la anulación modelBuilder

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top