c# - 从对象、 Entity Framework 自动创建数据库表

标签 c# sql asp.net-mvc entity-framework

我正在尝试完成本教程 http://www.asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/getting-started-with-mvc3-part4-cs但我没有使用 SQL Server 的精简版,而是在我的本地计算机上使用完整安装。我阅读本教程的方式是 Entity Framework 假设从我定义的对象创建表。我的问题是,当我运行该项目时,我不断收到无效的对象名称 dbo.movi​​es。我终于通过自己创建表来运行它,所以我知道连接字符串并且一切都是正确的。

我的问题是,是否可以从在 C# 中创建的对象生成表,如果可以,如何生成?

最佳答案

is it possible to generate tables from objects created in 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();

关于c# - 从对象、 Entity Framework 自动创建数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9873873/

相关文章:

sql - 在管道分隔串联期间格式化列标题 (Oracle SQL)

mysql - 如何使用随机事件名称从存储过程创建事件?

mysql - 使用 knexjs 插入忽略

c# - 创建类的新实例时出现 NullReferenceException

c# - DataAnnotations "NotRequired"属性

c# - 选项卡控件 - 更改为不同的形式 (C#)

asp.net-mvc - 何时公开 IEnumerable 而不是 ICollection?

asp.net - 两个服务器之间的共享身份验证

c# - ASP.NET MVC 如何将 Controller 操作指向不同的 View ?

c# - 在 "out"参数中传递值类型是否会导致变量被装箱?