Web的简单性使之能够得到广泛的普及,并且成为互联网的标准。它由URL/HTTP/HTML三个基本的标准构成。HTTP是Web的核心,它是一个简单的请求-——回复的传输协议,客户端请求什么,服务端就给什么,并且每次消息交换均是独立的。HTTP是一种文档化的协议(Documented Protocol),客户端将请求文档置于HTTP请求封套(Envelope)中发送给服务端,而服务端将响应文档置于HTTP响应封套中返回给客户端。
HTTP方法(HTTP Menthod或者HTTP Verb)对于REST来说是一个非常重要的概念哦。如果将请求的目标视为一种网络资源的话,HTTP方法反映了正对该资源的操作类型。我们常用的几种HTTP方法(比如GET/HEAD,PUT,POST和DELETE)分别体现了这对目标资源的获取、添加、修改和删除操作。
Rest与技术无关,代表的是一种软件架构风格。REST是Representational State Transfer的简称。中文翻译为"表征状态转移"。在此之前Web服务具有两种主流的架构风格,即SOAP和XML_RPC.
REST从资源的角度来审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的额表征,获得这些表征致使这些引用程序转变了状态。随着不断获取资源的表征,客户端应用不断的在转变着状态。
所有的数据,不论是通过网络请求获取的还是操作(创建,修改和删除)的数据,都是资源。这部仅仅包括图片、MP3和视频这些通过具体文件承载的物理资源,还包括通过关系型数据库保存的数据,甚至包括一些经过实时计算得到的数据。将一切数据视为资源是REST区别于其它架构分割最为本质的属性。
ASP.NET Web API直接借鉴了 ASP.NET MVC的设计,所以两者有非常类似的编程模式。
实体状态和附加和 SaveChanges 方法
跟踪的数据库上下文是否在内存中的实体与在数据库中,其相应的行同步以及此信息确定调用SaveChanges
方法时,会发生什么。例如,当你传递给Add方法的一个新的实体,该实体的状态设置为Added
。然后当你调用SaveChanges方法,数据库上下文发出 SQLINSERT
命令。
实体可以处于以下状态之一:
Added
。实体不存在尚未在数据库中。SaveChanges
方法必须发出一个INSERT
语句。Unchanged
。什么都不需要去做与此实体SaveChanges
法。当你从数据库中读取的实体时,该实体开始与这种地位。Modified
。某些或所有实体的属性值已被都修改。SaveChanges
方法必须发出一个UPDATE
语句。Deleted
。实体已标记为删除。SaveChanges
方法必须发出DELETE
语句。Detached
。该实体不是被跟踪的数据库上下文。
在桌面应用程序中,通常自动设置状态更改。在桌面应用程序的类型中,您阅读实体,并对一些其属性值进行更改。这将导致其实体的状态自动更改为Modified
。然后当你调用SaveChanges
,实体框架生成更新仅有实际的属性更改 SQLUPDATE
语句。
Web 应用程序的已断开连接的性质不允许为此连续的序列。读取一个实体DbContext被处置后呈现的页面。当调用HttpPost
Edit
操作方法,发送新的请求和你有DbContext的一个新实例时,所以您必须手动将实体状态设置为Modified.
然后当您调用SaveChanges
,实体框架更新的数据库行的所有列,因为该上下文有没有办法知道哪些属性更改。
如果您想要更新只有用户实际更改的字段的 SQLUpdate
语句,可以以某种方式 (如隐藏字段) 保存的原始值,以便他们可以HttpPost
Edit
方法被调用时。然后可以Student
使用创建实体的原始值,调用Attach
方法与实体的原始版本,更新到新的值,该实体的值,然后调用SaveChanges.
更多的信息,请参阅实体状态和 SaveChanges和 MSDN 数据开发人员中心中的本地数据。