2015-09-23 7 views
1

Чтобы заложить основу из-за ошибки в MySQL для Visual Studio, которая приводит к сбою мастера создания, который в противном случае разрешил бы Code First из базы данных, мне пришлось вручную создать модель, а затем добавить «Add Controller», ссылаясь на WWUpdated и WWUpdatedDBContext. Тем не менее, определенная линия в моем контроллере вызывает у меня вопросы:Как обновить .ToList() в контроллере, чтобы указать на другую таблицу?

return View(db.WWUpdatedSet.ToList()); 

Исключения типа «System.Data.Entity.Core.EntityCommandExecutionException» произошел в EntityFramework.dll, но не обрабатываемые в пользователе код

Дополнительная информация: Ошибка при выполнении команды . Подробнее см. Внутреннее исключение.

Внутреннее исключение:

{ " 'mydb.wwupdateds' таблица не существует"}

И действительно, что таблица не существует. Он существует как mydb.ww_updated. Итак, как мне изменить свой код, чтобы он выглядел вверх mydb.ww_updated? Я предполагаю, что когда я создал контроллер EF, просто добавил «s» к имени модели, чего я не хочу. Я пробовал искать все мое решение для «mydb.wwupdateds» и пришло в порядок, поэтому я не уверен, где/как его изменить, чтобы ссылаться на правильное имя таблицы.

Справочную часть моего контроллера:

public class WWUpdatedSetController : Controller 
{ 
    private WWUpdatedDBContext db = new WWUpdatedDBContext(); 

    // GET: WWUpdatedSet 
    public ActionResult Index() 
    { 
     return View(db.WWUpdatedSet.ToList()); 
    } 

Модель:

public class WWUpdated 
{ 
    public int ID { get; set; } 

    public int ww { get; set; } 

    public string owner { get; set; } 

    public string project { get; set; } 

    public string status { get; set; } 

} 

public class WWUpdatedDBContext : DbContext 
{ 
    public DbSet<WWUpdated> WWUpdatedSet { get; set; } 
} 

}

ответ

1

Вы явно не сопоставить сущности класс WWUpdated к таблице в базе данных. Таким образом, по умолчанию он использует первое кодовое соглашение о множественном использовании имен таблиц. Это означает, что он будет искать таблицу WWUpdateds вместо таблицы ww_updated. Таким образом, вы должны использовать Table аннотацию или свободно API для отображения таблицы в явном виде:

[Table("ww_updated")] 
public class WWUpdated 
{ 
    //... 
} 

или свободно апи:

protected override void OnModelCreating(DbModelBuilder modelBuilder) { 
    modelBuilder.Entity<WWUpdated>().ToTable("ww_updated"); 
}