Bud*_*Joe 5 mysql entity-framework ef-code-first entity-framework-4.1
我是EF,EF Code First和EF with MySQL的新手.EF Code First何时在ASP.NET MVC Web项目中创建表?
我创建了一个Person模型.然后生成Controller和标准视图.当我点击Person控制器的Index方法时,它会尝试撤回所有People的列表.然后我得到错误:
执行命令定义时发生错误.有关详细信息,请参阅内部异常
内部异常:
表'testmvc.people'不存在
所以我已经超越了连接.但桌子没有创建.如何创建表格?另外,如何在命名方案中防止Person to People的复数化?
生成数据库模式(人员表和其他人)的最简单方法是设置数据库初始化策略,如下所示:
Database.SetInitializer<SomeContext>( new
DropCreateDatabaseAlways<SomeContext>());
Run Code Online (Sandbox Code Playgroud)
此代码需要在尝试加载任何数据之前运行,因此Global.asax中的Application_Start()方法将是一个很好的地方.有几种方法可以初始化,因此您可能需要在选择之前查看它们,请参阅http://msdn.microsoft.com/en-us/library/system.data.entity%28v=vs.103% 29.aspx并查看实现IDatabaseInitializer的方法.官方说来,默认情况下有一个策略,虽然我从来没有发现这对我有用.
您还应该知道,虽然此方法非常适合原型设计和开发,但您不能在具有实时数据的生产数据库上使用它,因为首先删除数据库然后重新创建数据库.此时还有其他方法可以执行此操作 - 请参阅Entity Framework 4的数据库迁移以了解可能性.
关于使用非复数表名的其他问题,有几种方法可以做到这一点.一种方法是像这样注释Person类:
[Table("Person")]
class Person
{
// some field attributes
}
Run Code Online (Sandbox Code Playgroud)
要一次为所有表设置此项,您可以使用fluent API,如下所示:
class SomeContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5428 次 |
| 最近记录: |