[EF]使用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简单增删改查的更多相关文章
- 国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作
专题目录 国产化之路-统信UOS操作系统安装 国产化之路-国产操作系统安装.net core 3.1 sdk 国产化之路-安装WEB服务器 国产化之路-安装达梦DM8数据库 国产化之路-统信UOS + ...
- ado.net的简单数据库操作(三)——简单增删改查的实际应用
果然,在犯困的时候就该写写博客,写博客就不困了,哈哈! 上篇我记录了自己的SqlHelper的开发过程,今天记录一下如何使用这个sqlhelper书写一个具有简单增删改查的小实例啦. 实例描述:在数据 ...
- Redis:五种数据类型的简单增删改查
Redis简单增删改查例子 例一:字符串的增删改查 #增加一个key为ay_key的值 127.0.0.1:6379> set ay_key "ay" OK #查询ay_ke ...
- Mybatis实现简单增删改查
Mybatis的简单应用 学习内容: 需求 环境准备 代码 总结: 学习内容: 需求 使用Mybatis实现简单增删改查(以下是在IDEA中实现的,其他开发工具中,代码一样) jar 包下载:http ...
- ASP.NET MVC学习---(三)EF简单增删改查
那么现在我们已经大概从本质上了解了ef 巴拉巴拉说了一大堆之后 总算要进入ef的正题了 总在口头说也太不行了是吧~ 没错,现在要用ef进行一些实际的操作 做什么呢? 就做一个入门级的增删改查操作吧 废 ...
- EF学习笔记——通用增删改查方案
http://blog.csdn.net/leftfist/article/details/25005307 我刚接触EF未久,还不知道它有什么强大之处,但看上去,EF提供了一般的增删改查功能.以往用 ...
- Asp.net MVC4 使用EF实现数据库的增删改查
EF的使用 步骤: (1)将EF添加到项目:在Model右击添加新建项 找到ADO.NET实体数据模型,接着... (2)实现数据库的增删改查 查询 (因为在Model中已经添加EF实体了 ...
- 使用EF实现数据库的增删改查
EF的使用步骤:(1)将EF添加到项目:在Model右击添加新建项找到ADO.NET实体数据模型,接着…(2)实现数据库的增删改查查询(因为在Model中已经添加EF实体了,所以就可以在Control ...
- mongodb数据库学习【安装及简单增删改查】
//@desn:mongodb数据库学习 //@desn:码字不宜,转载请注明出处 //@author:张慧源 <turing_zhy@163.com> //@date:2018/08/ ...
随机推荐
- Meld:文件及目录对比工具
Meld:文件及目录对比工具 http://wowubuntu.com/meld.html http://meld.sourceforge.net/
- 004 ConcurrentHashMap原理
下面这部分内容转载自: http://www.haogongju.net/art/2350374 JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能.因为 ...
- 【Educationcal Codeforces Round 21】
这场edu我原本以为能清真一点…… 后来发现不仅是七题 还有各种奇奇怪怪的骚操作…… A. 随便枚举 #include<bits/stdc++.h> using namespace std ...
- popup menu案例,无说明只代码
效果图: 布局文件, 展示列表的容器 <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...
- 【Java基础】一些问题
1. HashSet是如何保证数据不重复的: 首先,HashSet添加元素的时候,底层是通过HashMap的put方法来实现的,而添加的元素,则是保存在了hashMap的key里,因为HashMap的 ...
- XML、java解释XML、XML约束
1.XML有什么用? (1)可以用来保存数据 (2)可以用来做配置文件 (3)数据传输载体 2.XML格式 XML 元素必须遵循以下命名规则: 名称可以含字母.数字以及其他的字符 名称不能以数字或者标 ...
- 安装Hadoop2.7和hive2.0以及redis
安装过程很简单,主要记录期间碰到的问题: 安装过程: 下载安装包: hadoop:http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7. ...
- .net core 2.0使用NLog写日志文件
原文地址:传送门 之前也看了 linezero 大佬写的教程,但是总是没有成功写入日志文件.按照 曲廉卿 的已成功,以下正文: 最近研究了一下NLog的使用方式,简单的入了一下门. 实现的功能,对于不 ...
- 关于render函数的总结
一般情况下封装一个导航组件的写法 <!DOCTYPE html> <html lang="en"> <head> <meta charse ...
- .net mvc禁用浏览器缓存
我正在寻找方法来禁用 整个 ASP.Net MVC 网站 的浏览器缓存 我发现以下方法, Response.Cache.SetCacheability(System.Web.HttpCacheabil ...