目录

认识EF

添加数据

删除数据

修改数据

查询数据

总结

认识EF

ADO.NET Entity Framework 是微软以ADO.NET为基础所发展出来的对象关系对伊(O/R Mapping)解决方案,早起被称为ObjectSpage,最新版本EF6。

实体框架Entity Framework是ADO.NET中的一组支持面向数据的软件应用程序的技术。是微软的一个ORM框架。

什么是O/R Mapping

广义上,ORM指的是面向对象模型和关系数据库的数据结构之间的相互转换。

狭义上,ORM可以被认为是,基于关系数据库的数据存储,实现一个虚拟的面向对象的数据访问接口。理想情况下,基于这样一个面向对象的接口,持久化一个OO对象应该不需要了解任何关系型数据存储数据的实现细节。

添加数据

测试用数据库

 USE [Wolfy.Shop]
GO /****** Object: Table [dbo].[TB_Customer] Script Date: 2014/7/29 20:01:56 ******/
SET ANSI_NULLS ON
GO SET QUOTED_IDENTIFIER ON
GO CREATE TABLE [dbo].[TB_Customer](
[ID] [uniqueidentifier] NOT NULL,
[Name] [nvarchar](32) NULL,
[Address] [nvarchar](100) NULL,
[Gender] [bit] NULL,
CONSTRAINT [PK_CustomerID] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] GO

TB_Customer

 USE [Wolfy.Shop]
GO /****** Object: Table [dbo].[TB_Order] Script Date: 2014/7/29 20:02:47 ******/
SET ANSI_NULLS ON
GO SET QUOTED_IDENTIFIER ON
GO CREATE TABLE [dbo].[TB_Order](
[ID] [int] NOT NULL,
[OrderName] [nvarchar](1000) NULL,
[CreateDate] [datetime] NULL,
[customerId] [uniqueidentifier] NULL,
CONSTRAINT [PK_TB_Order] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] GO ALTER TABLE [dbo].[TB_Order] WITH CHECK ADD CONSTRAINT [FK_Customer_Order] FOREIGN KEY([customerId])
REFERENCES [dbo].[TB_Customer] ([ID])
GO ALTER TABLE [dbo].[TB_Order] CHECK CONSTRAINT [FK_Customer_Order]
GO

TB_Order

工具VS2013,SQL SERVER2012
在使用EF的时候发现,跟之前的版本差别还是挺大的,有些方法的名字都改了。这里记录一下,使用的时候方便查找吧。

测试页面

 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AddCustomer.aspx.cs" Inherits="Wofly.EFDemo.AddCustomer" %>

 <!DOCTYPE html>

 <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button Text="添加" CommandArgument="add" runat="server" ID="btnAdd" OnClick="btnAdd_Click" />
<table>
<tr>
<td>用户名:</td>
<td>
<asp:TextBox runat="server" ID="txtUserName" ClientIDMode="Static" /></td>
</tr>
<tr>
<td>用户地址:</td>
<td>
<asp:TextBox runat="server" ID="txtAddress" ClientIDMode="Static" /></td>
</tr>
<tr>
<td>性别:</td>
<td>
<asp:RadioButton runat="server" Checked="true" ID="rdbMan" Text="男" GroupName="gender" />
<asp:RadioButton GroupName="gender" runat="server" ID="rdbFemale" Text="女" />
</td>
</tr>
</table>
<asp:Repeater runat="server" ID="rptCustomerList">
<HeaderTemplate>
<table>
<tr>
<th>序号</th>
<th>用户名</th>
<th>地址</th>
<th>性别</th>
<th>操作</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Container.ItemIndex+1 %></td>
<td><%#Eval("Name") %></td>
<td><%#Eval("Address") %></td>
<td><%#Convert.ToBoolean(Eval("Gender"))==true?"男":"女" %></td>
<td>
<asp:LinkButton Text="编辑" runat="server" OnClick="lnkEdit_Click" CommandName="Edit" CommandArgument='<%#Eval("ID") %>' ID="lnkEdit" /><asp:LinkButton Text="删除" runat="server" OnClick="lnkEdit_Click" ID="lnkDelete" CommandName="Delete" CommandArgument='<%#Eval("ID") %>' /></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>

AddCustomer.aspx

增加用户

                ShopEntities shopEntities = new ShopEntities();
TB_Customer tb_CustomerAdd = new TB_Customer() { ID = Guid.NewGuid(), Name = txtUserName.Text, Address = txtAddress.Text, Gender = rdbMan.Checked ? true : false };
shopEntities.TB_Customer.Add(tb_CustomerAdd);
int intResult = shopEntities.SaveChanges();
if (intResult > )
{
DataInit();
}

删除数据

                    shopEntities.TB_Customer.Remove(tb_Customer);
if (shopEntities.SaveChanges() > )
{
this.DataInit();
}

修改数据

                 ShopEntities shopEntities = new ShopEntities();
var customer = from c in shopEntities.TB_Customer
where c.ID == new Guid(btn.CommandArgument)
select c;
TB_Customer tb_CustomerUpdate = customer.FirstOrDefault<TB_Customer>();
//将 对象 添加到 EF中
tb_CustomerUpdate.Name = txtUserName.Text;
tb_CustomerUpdate.Address = txtAddress.Text;
tb_CustomerUpdate.Gender = rdbMan.Checked ? true : false;
//是否修改
shopEntities.Entry<TB_Customer>(tb_CustomerUpdate).State = System.Data.EntityState.Modified;
//一次性 生成sql语句到数据库执行
shopEntities.SaveChanges();

查询数据

         private void DataInit()
{
ShopEntities shopEntities = new ShopEntities();
var customers = from c in shopEntities.TB_Customer
select c;
this.rptCustomerList.DataSource = customers.ToList();
this.rptCustomerList.DataBind();
}

总结

新技术更新可真快,这里只是记录增删改查的方法,也没具体描述,只是影响中感觉跟ef4差别很大。这里记录一下,使用起来的时候,希望能快速上手。

[EF]使用EF简单增删改查的更多相关文章

  1. 国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作

    专题目录 国产化之路-统信UOS操作系统安装 国产化之路-国产操作系统安装.net core 3.1 sdk 国产化之路-安装WEB服务器 国产化之路-安装达梦DM8数据库 国产化之路-统信UOS + ...

  2. ado.net的简单数据库操作(三)——简单增删改查的实际应用

    果然,在犯困的时候就该写写博客,写博客就不困了,哈哈! 上篇我记录了自己的SqlHelper的开发过程,今天记录一下如何使用这个sqlhelper书写一个具有简单增删改查的小实例啦. 实例描述:在数据 ...

  3. Redis:五种数据类型的简单增删改查

    Redis简单增删改查例子 例一:字符串的增删改查 #增加一个key为ay_key的值 127.0.0.1:6379> set ay_key "ay" OK #查询ay_ke ...

  4. Mybatis实现简单增删改查

    Mybatis的简单应用 学习内容: 需求 环境准备 代码 总结: 学习内容: 需求 使用Mybatis实现简单增删改查(以下是在IDEA中实现的,其他开发工具中,代码一样) jar 包下载:http ...

  5. ASP.NET MVC学习---(三)EF简单增删改查

    那么现在我们已经大概从本质上了解了ef 巴拉巴拉说了一大堆之后 总算要进入ef的正题了 总在口头说也太不行了是吧~ 没错,现在要用ef进行一些实际的操作 做什么呢? 就做一个入门级的增删改查操作吧 废 ...

  6. EF学习笔记——通用增删改查方案

    http://blog.csdn.net/leftfist/article/details/25005307 我刚接触EF未久,还不知道它有什么强大之处,但看上去,EF提供了一般的增删改查功能.以往用 ...

  7. Asp.net MVC4 使用EF实现数据库的增删改查

    EF的使用 步骤: (1)将EF添加到项目:在Model右击添加新建项 找到ADO.NET实体数据模型,接着... (2)实现数据库的增删改查       查询 (因为在Model中已经添加EF实体了 ...

  8. 使用EF实现数据库的增删改查

    EF的使用步骤:(1)将EF添加到项目:在Model右击添加新建项找到ADO.NET实体数据模型,接着…(2)实现数据库的增删改查查询(因为在Model中已经添加EF实体了,所以就可以在Control ...

  9. mongodb数据库学习【安装及简单增删改查】

    //@desn:mongodb数据库学习 //@desn:码字不宜,转载请注明出处 //@author:张慧源  <turing_zhy@163.com> //@date:2018/08/ ...

随机推荐

  1. Docker壳的配置笔记

    docker 就是一个运行容器,在这个盒子里,他的端口,路径可以虚拟到另一个实际的磁盘上,运行空间独立,更安全! yum install -y docker docker-client service ...

  2. mac10.9下安装Android

    这里记录一下mac下安装android比较快捷的方法 首先,到这里下载Android SDK,这个是集成的,所有工具一应俱全,免去了下载一堆东西的烦恼.具体包括如下: Eclipse + ADT pl ...

  3. 【LabVIEW技巧】你可以不懂OOP,却不能不懂封装

    前言 大多数写LabVIEW程序的工程师都不是一个纯软的工程师,很多做硬件的.做机械的.甚至学化学的也会学习LabVIEW. 由于主要重心不在软件,所以LabVIEW程序基本上能用行,也就得到入门容易 ...

  4. 部署HBase系统(分布式部署)

    1.简介 HBase系统主要依赖于zookeeper和hdfs系统,所以部署HBase需要先去部署zookeeper和hadoop 2.部署开始 IP或者HOSTNAME需要根据自身主机信息设定. 部 ...

  5. RabbitMQ 实践及使用

    目录 - 1. RabbitMQ的安装    - 1.1 配置好 epel    - 1.2 安装 RPM包    - 1.3 创建用户设置权限- 2. RabbitMQ组件- 3. RabbitMQ ...

  6. [USACO06NOV]路障---严格次短路

    Description 贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友.贝茜很喜欢路边的风景,不想那么快地结束她的旅途,于是她每次回农场,都会选择第二短的路径,而不象我们所习惯的那样, ...

  7. StringBuilder类的作用,以及与String类的相互转换

    # 转载请留言联系 先看一段String类的字符串拼接的代码. String s = "hello" 会在常量池开辟一个内存空间来存储”hello". s += &quo ...

  8. linux命令(47):rmdir命令

    1.命令格式: rmdir [选项]... 目录... 2.命令功能: 该命令从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对父目录的写权限. 3.命令参数: - p 递归删除目录dirn ...

  9. PHP数组转对象,对象转数组

    废话不多,直接上代码: <?php class object_array{ //数组转对象 public static function array_to_object($e){ if(gett ...

  10. 是时候升级你的Js工具了-分页【基于JQ】

    好久没有来逛园子,也好久没有更新博客,就像沉睡已久的人忽然被叫醒,忽然就被园友的回复惊醒了.园友提出了关于我之前一篇文章的疑问——可那已经是半年以前的博客了,加上我一直觉得分享给大家的应该是我最新的思 ...