一尘不染

从对象,实体框架自动创建数据库表

sql

我正在尝试执行本教程http://www.asp.net/mvc/tutorials/getting-started-with-aspnet-
mvc3/getting-started-with-
mvc3-part4-cs,但不是使用精简版的SQL
Server我在本地计算机上使用完整安装。我阅读本教程的方式是,实体框架是根据我定义的对象创建表的。我的问题是,在运行项目时,我总是得到无效的对象名称dbo.movi​​es。我终于通过自己创建表来运行它,因此我知道了连接字符串,并且一切都正确。

我的问题是,是否可以从用C#创建的对象生成表,如果可以,怎么办?


阅读 141

收藏
2021-03-10

共1个答案

一尘不染

是否可以从用C#创建的对象生成表?

对的,这是可能的。在运行代码之前,您是否碰巧在Management Studio中手动创建了数据库?那可能是你的问题。使用Code
First,默认约定是创建尚不存在的数据库。如果数据库已经存在(甚至没有表),那么它将仅使用现有数据库(但不会尝试创建表)。

您可以删除数据库,然后再次尝试运行代码以查看它是否会为您创建数据库,或者将以下行放入Global.asax中:

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

一旦运行,我建议将该行更改为:

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<YourDbContextHere>());

这些名称空间在 System.Data.Entity

所述DbContext类还公开它定义了以下有用的方法数据库属性:

Delete()
Create()
CreateIfNotExists()

因此,如果您这样定义类:

public class MyContext : DbContext {}

您可以像这样构造一个实例:

MyContext db = new MyContext();
db.Database.Delete();
db.Database.Create();
2021-03-10