使用Entity Framework 4进行代码优先开发(3)

2019-04-14 09:43

把光标放在控制器的Create函数来在项目中添加“Create”视图,单击右键菜单里的“添加视图”命令。在“添加视图”对话框中,我们还是指定创建一个强类型视图,然后传给它一个Dinner对象。另外还说明了我们希望使用“Create”模板搭个框架:

单击“添加”后,Visual Studio会创建一个/Views/Home/Create.aspx文件,里面有一个包含了为“Dinner”对象生成的HTML

表单的草案。我们做一点点的调整,并删掉了为DinnerID属性生成的input

元素。最终的视图模板如下所示:

迄今为止,我们已经写好了网站里实现列出餐会清单和创建餐会信息的控制器和视图的所有代码。

第四步: 数据库

代码已经写好了。现在让我们来运行程序。 但数据库呢?

我们现在还没有数据库呢——其实到目前为止也没有必要,因为我们“代码优先”的开发流程并不要求数据库来定义和使用我们的模型类。

但当我们实际运行我们的应用程序时,我们要存储Dinner和 RSVP对象的。我们可以用下面的两种方式之一去创建数据库:

1. 使用数据库工具(如SQL Management Studio或 Visual Studio)去手动创建和定义数据库结构; 2. 使用EF代码优先类库根据我们定义好的模型自动创建和生成数据库结构。 第二种方式非常酷,而且我们要把它用在我们的NerdDinner程序中。 配置数据库连接字符串

在开始前,我们要设置好指向将要创建的数据库的连接字符串。我们把数据库连接字符串“NerdDinners”添加到应用程序的web.config文件中,如下所示:

在默认情况下,当你用EF的代码优先类库创建一个DbContext类的时候,它会自动查找和Context类名匹配的连接字符串。因为我们将Context类命名为“NerdDinners”,所以,当ASP.NET应用程序初始化它的时候,默认会找到前面添加好的“NerdDinners”数据库连接字符串。 使用SQL CE 4

EF 代码优先类库可以支持多个不同的数据库——包括 SQL Server、 SQL Express和 MySQL。 两个星期前,我写了一篇在ASP.NET中使用嵌入式SQL CE 4 数据库引擎的博客。SQL CE 4 是一个轻量级的基于文件的数据库,安装简便,且可以嵌入在ASP.NET应用程序中。它支持低成本的宿主

环境,又能够轻松地迁移到SQL Server 数据库当中。

在定义(和重新定义) 你的数据模型层的前期阶段,SQL CE可以是一个很不错的选择——另外,只要你想,还可以快速地创建和重新创建数据库。在开发NerdDinner应用程序时,我们将以SQL CE 4 作为数据库。后面,我们可以选择更改连接字符串去将产品部署到SQL Express或者SQL Server上——无需修改任何一行代码。

我前面设置的数据库连接字符串,指定了NerdDinners.sdf 数据库文件,并使用SQL CE 4 数据库驱动程序。要使它正常工作,你还需要安装SQL CE 4——安装它可以通过标准的SQL CE安装程序或WebMatrix(已内置SQL CE)。SQL CE 4 很小,只要几秒钟就可以安装好。

重要事项:上面的连接字符串中,我们指定将NerdDinners.sdf文件创建在\\DataDirectory\\文件夹下——在ASP.NET应用程序中对应的就是其根目录下的\\App_Data\\文件夹。默认情况下,新建\空ASP.NET MVC Web应用程序\项目模板不会创建此目录。所以你需要显式在项目中创建此文件夹(右键单击该项目并选择\添加ASP.NET文件夹-> Add_Data->\菜单项)。 自动创建数据库结构(Schema)

EF 代码优先类库支持自动地从数据模型类生成数据库结构和数据库的能力——免除用户必须手动去执行这些步骤。

如果您的连接字符串指定的SQL CE 或 SQL Express 数据库文件在磁盘中不存在,默认就会发生。你根本不需要执行任何手动步骤。

要看到效果,我们可以按 F5 键运行我们的NerdDinner应用程序。它会启动浏览器,并访问我们应用程序的根目录\。你应该可以看到下面所示的画面:


使用Entity Framework 4进行代码优先开发(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018-2024年中国剑杆织机市场竞争格局报告(目录) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: