Entity Framework crée un pluriel nom de la table, mais la vue s'attend à un singulier nom de la table?

Je suis de l'utilisation de MySQL .net connecteur 6.4.4.0 et Entité Cadre de travail 4.1 et essayer de créer les plus élémentaires de code-premières mises en œuvre.

public class myDB: DbContext
{
    public DbSet<Vote> Votes { get; set; }
}

mon modèle

public class Vote
{
    public Guid Id { get; set; }
    public int Value { get; set; }
}

ma maison contrôleur

public class HomeController : Controller
{
    myDB_db = new myDB();
    public ActionResult Index()
    {
        var model = _db.Votes;
        return View(model);
    }
}

ma fortement typé de vue (à l'aide de la Liste d'échafaudage)

@model IEnumerable<Namespace.Models.Vote>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Value)
        </th>
        <th></th>
    </tr>

    @foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Value)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
            @Html.ActionLink("Details", "Details", new { id=item.Id }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.Id })
        </td>
    </tr>
    }

</table>

Il crée la table "voix" dans mySQL avec toutes les bonnes propriétés.

Cependant, il jette à cette ligne:

@foreach (var élément dans le Modèle)

à l'exception:

"Tableau" mydb.vote "n'existe pas"

edit:
Pour clarifier, je veux en fait la table de la pluralisation, et il semble pour créer correctement le tableau. Je suis l'espoir de découvrir la raison pour laquelle le singulier/pluriel, à la contradiction. Aucun des tutoriels et des vidéos à partir de microsoft /Pluriel Vue /scott gu poignée à l'aide de mysql, j'ai donc imaginer que l' .netconnector pourrait être le coupable. Je voudrais aussi éviter d'utiliser le [Tableau("Voix")] attributs. Fondamentalement, je suis en espérant que beaucoup de "hors de la boîte" solution possible.

edit2 (certains plus pertinents du code):
quand je supprimer ce...tables ne parviennent pas à créer tous ensemble.
mais le point de vue déclenche une exception à la recherche pour les "voix" et non pas "voter".
au sein de global.asax

protected void Application_Start()
{
     Database.SetInitializer(new DropCreateDatabaseAlways<myDB>());

     AreaRegistration.RegisterAllAreas();
     RegisterGlobalFilters(GlobalFilters.Filters);
     RegisterRoutes(RouteTable.Routes);
}

public class myDBInitializer : DropCreateDatabaseAlways<myDB>
{
    protected override void Seed(myDBcontext)
    {
        base.Seed(context);
    }
}
  • L'utilisation du Table attribut résoudre le problème? Vous pouvez également utiliser l'API fluent si vous n'aimez pas l'attribut. Avez-vous essayé avec SQL Express? Peut-être il ya un problème avec le connecteur MySQL
  • je fait juste essayé d'ajouter [Table("Voix")] ci-dessus, le Vote de la classe, et le problème persiste. et non, je n'ai pas essayé avec SQLExpress parce que j'ai besoin pour le faire fonctionner avec mysql 🙂
  • ps. la table d'attribut a la valeur de Vote, résout le problème. Pourquoi la vue s'attendre à la mauvaise table nom!!!!?? 🙁
  • Je ne sais pas MySQL, donc je ne peux que vous demander si vous êtes sûr à 100% que la table dans MySQL est appelé "voix" et non pas "voter"
  • yep, juste connecté sur le serveur et vérifié les db. certainement nommé 'voix'.
  • Si elle n'est pas trop tard, j'ai entendu parler de notre administrateur local et de lire qu'il est bon DB pratique de conserver les noms de table singulier.

InformationsquelleAutor nograde | 2011-10-28