gpt4 book ai didi

mysql - Entity Framework Code First - MySQL - 错误找不到表

转载 作者:可可西里 更新时间:2023-11-01 07:01:37 24 4
gpt4 key购买 nike

我是 EF、EF Code First 和 EF with MySQL 的新手。 EF Code First 何时会在 ASP.NET MVC Web 项目中创建您的表?

我创建了一个 Person 模型。然后生成 Controller 和标准 View 。当我点击 Person Controller 的 Index 方法时,它会尝试拉回所有人员的列表。然后我得到错误:
执行命令定义时发生错误。有关详细信息,请参阅内部异常。
内部异常:
表 'testmvc.people' 不存在

所以我已经通过了连接。但是表没有创建。如何创建表格?另外,如何防止命名方案中 Person to People 的复数化?

最佳答案

生成数据库模式(人员表和其他)的最简单方法是像这样设置数据库初始化策略:

Database.SetInitializer<SomeContext>( new 
DropCreateDatabaseAlways<SomeContext>());

此代码需要在您尝试加载任何数据之前运行,因此 Global.asax 中的 Application_Start() 方法是执行此操作的好地方。有多种初始化方法,因此您可能需要在选择一种之前先看一下它们,请参阅 http://msdn.microsoft.com/en-us/library/system.data.entity%28v=vs.103%29.aspx并查看实现 IDatabaseInitializer 的方法。正式地说,默认情况下有一个策略,尽管我从来没有发现它对我有用。

您还应该知道,虽然此方法非常适合原型(prototype)设计和开发,但您不能完全将其用于具有实时数据的生产数据库,因为数据库首先被删除然后重新创建。那时还有其他方法可以做到这一点 - 请参阅 Database migrations for Entity Framework 4寻找可能性。

关于使用非复数表名的其他问题,有几种方法可以做到这一点。一种方法是像这样注释 Person 类:

[Table("Person")]
class Person
{
// some field attributes
}

要一次为所有表设置此项,您可以使用 Fluent API,如下所示:

class SomeContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}

关于mysql - Entity Framework Code First - MySQL - 错误找不到表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8821280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com