如何在Controller中更新.ToList()以指向不同的表?

时间:2015-09-23 18:06:39

标签: c# mysql asp.net-mvc entity-framework asp.net-mvc-5

因此,由于MySQL中的一个错误导致Visual Studio崩溃了创建向导(否则会允许数据库中的Code First),我不得不手动创建模型,然后执行“添加控制器”引用{ {1}}和WWUpdated。但是,我的控制器中的特定行导致了我的问题:

WWUpdatedDBContext
  

类型的例外   发生'System.Data.Entity.Core.EntityCommandExecutionException'   EntityFramework.dll但未在用户代码中处理

     

附加信息:执行命令时发生错误   定义。有关详细信息,请参阅内部异常。

内部异常:

  

{“表'mydb.wwupdateds'不存在”}

事实上,那张桌子不存在。它以return View(db.WWUpdatedSet.ToList()); 存在。那么如何更改我的代码以便它查找mydb.ww_updated呢?我猜我何时创建控制器EF只是将“s”附加到模型名称,这不是我想要的。我已经尝试搜索我的整个解决方案'mydb.wwupdateds'并且空白,所以我不知道在哪里/如何更改它以引用正确的表名。

对于我的控制器的参考部分:

mydb.ww_updated

型号:

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

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

}

1 个答案:

答案 0 :(得分:1)

您未明确将实体类WWUpdated映射到数据库中的表。因此,默认情况下,它使用复数表名的代码优先约定。这意味着它将查找WWUpdateds表而不是ww_updated表。因此,您必须使用Table注释或流畅的api来明确映射表:

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

或流利的api:

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