Code-first: Mappage d'entités sur des tables de base de données existantes

Je suis en utilisant Entity Framework 6 code-première, avec une base de données existante, mais ayant des problèmes de mappage de mes entités de la base de données des tables.

Normalement, je voudrais utiliser la base de données-première approche et de mon entité et le contexte du code généré, mais en utilisant le concepteur est devenu une immense douleur.

J'ai mis en Base de données.SetInitializer(null) comme je ne veux pas EF à modifier mon schéma.

Schéma de base de données:

Code-first: Mappage d'entités sur des tables de base de données existantes

Code-première:

public class Project
{
    public int ProjectId { get; set; }

    public string Name { get; set; }

    public string Description { get; set; }
}

public class ReleaseControlContext : DbContext
{
    public ReleaseControlContext()
        : base(ConfigurationManager.ConnectionStrings["ReleaseControl"].ConnectionString) 
    {
        Database.SetInitializer<ReleaseControlContext>(null);
    }

    public DbSet<Project> Projects { get; set; }
}

Code d'appel:

using(var context = new ReleaseControlContext())
{
    var projects = context.Projects.ToList();
}

L'exception suivante est générée:

SqlException: Invalid nom de l'objet 'dbo.Projets".

C'est parce que ma table de base de données est Projet et pas Projets. Je ne veux pas renommer mon contexte de DbSet<Project> de "Projet", parce que ce serait sémantiquement incorrect.

Question:

Dois-je utiliser l'API fluent/annotations de données de la carte entre la Projet table de base de données et le DbSet<Project> Projects collection?

source d'informationauteur davenewza