学习ASP.NET MVC(四)——我的第一个ASP.NET MVC 实体对象
今天我将根据数据库中的表结构添加一些类。这些类将成为这个ASP.NET MVC应用程序中“模型”的一部分。
我们使用Entity Framework(实体框架)来定义和使用这些模型类,并且访问数据库。实体框架 (EF) 是一种对象关系映射机制,支持 .NET 开发人员使用特定对象来处理关系数据。它消除了开发人员通常需要编写大部分数据访问代码的工作,所以也称为代码优先开发模式。使用实体框架 ,可以将自定义数据类与数据模型一起使用,而无需对数据类本身进行任何修改。 这意味着可以将“纯旧式”CLR 对象
(POCO)与数据模型一起使用。 这些 POCO 数据类(也称为“永久性未知对象”)映射到数据模型中定义的实体,它们支持与实体数据模型 工具生成的实体类型相同的大多数查询、插入、更新和删除行为。
一、添加实体类
在Visual Studio 的“解决方案资源管理器”中,右键单击Models文件夹,选择“添加—>类”。如下图。
在弹出对话框中输入类名的“Book”。 添加以下七个属性到Book类:
public class Book { public int BookID { get; set; } public string Category { get; set; } public string Name { get; set; } public int Numberofcopies { get; set; } public int AuthorID { get; set; } public decimal Price { get; set; } public DateTime PublishDate { get; set; } }
我使用Book类来表示数据库中的Books表中的一行记录。Book对象的每个实例都将对应数据库表(Books)中的一行数据,并Book类的每个属性将映射到表中的各个列。
在同一文件中,添加BookDBContext类,代码如下:
public class BookDBContext : DbContext { public DbSet<Book> Books { get; set; } }
这个BookDBContext类代表实体框架的书籍表(Books)的内容,它对数据库中Books表进行增加、修改、删除、查询的操作。这个BookDBContext继承自Entity Framework的DbContext基类。
为了能够使用DbContext和的DbSet两个类,你需要在文件的顶部添加以下语句:
using System.Data.Entity;
下面的完整Book.cs文件如下所示。
using System; using System.Data.Entity; namespace MvcApplication1.Models {
public class Book { public int BookID { get; set; } public string Category { get; set; } public string Name { get; set; } public int Numberofcopies { get; set; } public int AuthorID { get; set; } public decimal Price { get; set; } public DateTime PublishDate { get; set; } }
public class BookDBContext : DbContext { public DbSet<Book> Books { get; set; } }
二、创建SQL Server连接字符串
刚才创建的BookDBContext类主要功能是连接数据库和映射数据库表记录,实现CURD。如何连接到指定数据库将呢?通过在Web.config文件中增加数据库连接信息。
首先,打开应用程序的根目录下的Web.config文件。 如下图。
Web.config文件中的<connectionStrings>元素中默认会有一个连接,如下图。
我们要做的是要把下面的连接字符串添加到Web.config文件中的<connectionStrings>元素中
<add name="BookConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Test;Integrated Security=SSPI"
providerName="System.Data.SqlClient" />
添加了新的连接字符串的Web.config文件的一部分,如下图。
只要写以上少量的代码和在Web.config文件中写一下配置信息,就完成了对数据库CURD操作的所有功能代码。
在下一篇文章中,我将会创建一个用于显示书籍信息的列表页面,同时能进行新建、修改、删除、查询操作的BookController类。
学习ASP.NET MVC(四)——我的第一个ASP.NET MVC 实体对象的更多相关文章
- 学习ASP.NET MVC(七)——我的第一个ASP.NET MVC 查询页面
在本篇文章中,我将添加一个新的查询页面(SearchIndex),可以按书籍的种类或名称来进行查询.这个新页面的网址是http://localhost:36878/Book/ SearchIndex. ...
- 学习ASP.NET MVC(一)——我的第一个ASP.NET MVC应用程序
学习ASP.NET MVC系列: 学习ASP.NET MVC(一)——我的第一个ASP.NET MVC应用程序 学习ASP.NET MVC(二)——我的第一个ASP.NET MVC 控制器 学习ASP ...
- 学习ASP.NET MVC(五)——我的第一个ASP.NET MVC CURD页面
在上一篇文章中我们已经创建了实体类,在这一篇文章中,我将创建一个新的控制器类——BookController,使用BookController对Books表中的数据进行CURD操作的方法,并使用视图模 ...
- 学习ASP.NET MVC(三)——我的第一个ASP.NET MVC 视图
今天我将对前一篇文章中的示例进行修改,前一篇文章中并没有用到视图,这次将用到视图.对于前一个示例中的HelloWorldController类进行修改,使用视图模板文件生成HTML响应给浏览器. 一. ...
- 学习ASP.NET MVC(二)——我的第一个ASP.NET MVC 控制器
MVC全称是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范,用一种业务逻辑和数据显示分离的方法组织代码,将 ...
- 学习ASP.NET MVC(六)——我的第一个ASP.NET MVC 编辑页面
在上一文章中由Entity Framework(实体框架)去实现了对数据库的CURD操作.在本篇文章中,主要是调试修改自动生成的动作方法和视图,以及调试编辑功能与编辑功能的Book控制器. 首先,在V ...
- 初入码田--ASP.NET MVC4 Web应用之创建一个空白的MVC应用程序
初入码田--ASP.NET MVC4 Web应用开发之一 实现简单的登录 初入码田--ASP.NET MVC4 Web应用开发之二 实现简单的增删改查 2016-07-29 在此之前,需要一台电脑( ...
- 7、ASP.NET MVC入门到精通——第一个ASP.NET MVC程序
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 开发流程 新建Controller 创建Action 根据Action创建View 在Action获取数据并生产ActionResult传递 ...
- ASP.NET MVC入门到精通——第一个ASP.NET MVC程序
开发流程 新建Controller 创建Action 根据Action创建View 在Action获取数据并生产ActionResult传递给View. View是显示数据的模板 Url请求→Cont ...
随机推荐
- 错误 1 error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
不知怎么本来编译好好的VS2010环境,忽然出现“转换到 COFF 期间失败: 文件无效或损坏”的链接错误.花了好多天,试了好多方法,最终解决了这个问题. 现在罗列一下这几种解决方案: 方案1:点击“ ...
- 关于mha手动切换的一些记录(mha方案来自网络)
mha方案出自:http://www.cnblogs.com/xuanzhi201111/p/4231412.html 当主服务器故障时,人工手动调用MHA来进行故障切换操作,具体命令如下: 先停MH ...
- HttpWatch的Result中出现Aborted的原因分析[配图]
我们在使用HttpWatch进行Web调试的过程中有时候会看到非HTTP Status Code(状态码)的值,例如:(Aborted). (Aborted)是HttpWatch中定义的三种非HTTP ...
- Mac:文件夹树型展示 tree
目标: 想要在MAC的Terminal中查看文件夹中所有文件的树型结构及文件夹.文件树统计. 安装方法: 1.brew安装 官网:http://brew.sh/ brew是Mac中安装软件的神器,一定 ...
- surface上的手势事件
surface上的手势事件 1.surface上的触控事件测试. 手指触控在CHROME和FIREFOX下会触发touch事件,而IE10是不支持touch事件的. 手指触控在三个浏览器下均会触发全部 ...
- (多重背包+记录路径)Charlie's Change (poj 1787)
http://poj.org/problem?id=1787 描述 Charlie is a driver of Advanced Cargo Movement, Ltd. Charlie dri ...
- 关于Xcode7中添加不了libresolv.dylib等类似库的问题
Xcode7中,由于某些机制,使得我们在添加类似于 libresolv.dylib.libz.dylib等库的时候,直接在Build Phases中点击加号添加,似乎已经无法找到相应的库.此时,我们可 ...
- Android中实现倒计时
1.需求 弹出提示的dialog,实现倒计时,结束后关闭dialog 2.dialog界面布局 <?xml version="1.0" encoding="utf- ...
- 记一次Redis和NetMQ的测试
Redis是一个高速缓存K-V数据库,而NetMQ是ZeroMQ的C#实现版本,两者是完全不同的东西. 最近做游戏服务器的时候想到,如果选择一个组件来做服务器间通信的话,ZeroMQ绝对是一个不错的选 ...
- 基于jquery的图片轮播 (IE8以上)
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...