2013-12-22 45 views
1

我是MVC的新手,我的意图实际上是使用MVC 4学习'代码优先'技术。我曾经通过了几个'MVC 4实体框架'教程,毫无疑问,教程非常简单,可以理解。但对于每一个教程中,我followd的MVC 4无法执行脚手架

EF会寻找在默认的位置数据库,如果它不存在,它会为您创建它

部分没有为我工作。我必须在项目中添加ADO.net实体框架模型,并设计数据库实体吗?或者我错过了什么?已经超过15天了,我被卡住了。我想要学习,如教程中所述,如果我们提到连接字符串,EntityFramework会自动创建数据库,并且EntityFramework发现该路径不会被创建实际上包含这样的数据库,所以它创建一个)。

我已经通过了几个教程,比方说,我正在关注THIS之一。 (我正在使用Visual Studio Express for web 2012,EF 5.0.0)

回答

1

您的问题:我是否需要在项目中添加ADO.net实体框架模型,并设计数据库实体firt?

是的,在代码优先的方法中,你需要告诉实体框架你要创建什么表,你通过创建poco类(Plain old CLR Object)来实现。然后在运行时,实体框架将创建一个模型(女巫是一个XML文件),并根据该XML文件生成查询然后执行它。你可以阅读更多关于[CSDL MSL CSDL] [1]

所以为总结你写你的域类女巫被称为[先到现有数据库代码] [2]

[2]:http://weblogs.asp.net/scottgu/archive/2010/08/03/using-ef-code-first-with-an-existing-database.aspx它逆转工程数据库并为您创建模型。

+0

谢谢哈桑。我可以使用数据库优先模型。但我想尝试代码优先。但是当我在web.config *(名称与继承** DBContext **的类相同)中添加连接字符串时,EF不会创建任何数据库。即使我的CRUD操作是自动创建的,但没有数据库。你能猜出原因吗? – Zeeshan

+0

你在你的dbcontext中调用基类构造函数吗? – SHM

+0

完美!它是**基础构造函数**,我错过了。我假设保持我的连接名称类名称就足够了。我错了。谢谢。 – Zeeshan

1

我是否需要在项目中添加ADO.net实体框架模型,并首先设计数据库实体?

这实际上是更传统的方法,恰当地称为数据库优先方法。代码优先的方法是前者的替代方案。他们的意思完全是他们所说的。在代码优先的情况下,首先编写代码,实际上数据库是自动生成的。在数据库方法中,首先创建数据库,然后您可以使用EF自动生成处理数据库所需的代码,主要是CRUD和连接管理。

只要您的模型已经在您的项目中建立,ASP.NET MVC中的内置脚手架应该可以在代码优先或数据库优先的情况下正常工作。如果您发现生成的代码过于简单,您可以使用的替代脚手架是CamoteQ - 它是一种基于DDD原则和可识别模式的在线ASP.NET MVC脚手架工具。

+0

谢谢哈桑。我可以使用数据库优先模型。但我想尝试代码优先。但是当我在web.config *(ofcourse中,名称与继承DBContext的类相同)中添加连接字符串时,EF不会创建任何数据库。即使我的CRUD操作是自动创建的,但没有数据库。你能猜出原因吗? – Zeeshan