【问题标题】:MVC 4 unable to perform scaffoldingMVC 4 无法执行脚手架
【发布时间】:2013-12-26 18:06:26
【问题描述】:

我是 MVC 新手,实际上我的目的是学习使用 MVC 4 的“代码优先”技术。我已经完成了几个“MVC 4 实体框架”教程,毫无疑问,教程真的很简单,并且可以理解。但是对于我遵循的每个教程,

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

部分不适合我。我是否必须在项目中添加 ADO.net 实体框架模型,并首先设计数据库实体?还是我错过了什么?已经超过 15 天了,我被困住了。

(我尝试先手动创建数据库,并且效果很好。但是我想学习,如教程中所述,如果我们提到连接字符串,则数据库是自动创建的,并且 EntityFramework 发现该路径实际上并不包含这样的数据库,所以它创建一个)。

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

【问题讨论】:

    标签: entity-framework-5 asp.net-mvc-scaffolding


    【解决方案1】:

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

    是的,在代码优先的方法中,您需要告诉实体框架您要创建哪些表,您可以通过创建 poco 类(普通旧 CLR 对象)来实现。然后在运行时实体框架将创建一个模型(witch 是一个 xml 文件)并根据该 xml 文件生成查询然后执行它。您可以在 [CSDL MSL CSDL][1] 中阅读更多相关信息

    所以总结一下,你编写你的域类(poco 类)并且 ef 将为你创建 db,但顺便说一句,还有另一种方法,在实体框架代码中首先调用女巫 [Code first to existing database][2]

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

    【讨论】:

    • 谢谢哈桑。我可以使用数据库优先模型。但我想先尝试代码。但是当我在 web.config 中添加连接字符串(名称与继承 DBContext 的类相同)。 时,EF 不会创建任何数据库。甚至我的 CRUD 操作都是自动创建的,但没有 db。你能猜出原因吗?
    • 你在 dbcontext 中调用基类构造函数吗?
    • 完美!我缺少的是 基本构造函数。我假设保留我的连接名称类名就足够了。我错了。谢谢。
    【解决方案2】:

    我必须在项目中添加 ADO.net Entity 框架模型,然后先设计数据库实体吗?

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

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

    【讨论】:

    • 谢谢哈桑。我可以使用数据库优先模型。但我想先尝试代码。但是当我在 web.config 中添加连接字符串时(当然,名称与继承 DBContext 的类相同)。,EF 不会创建任何数据库。甚至我的 CRUD 操作都是自动创建的,但没有 db。你能猜出原因吗?
    猜你喜欢
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    相关资源
    最近更新 更多