一、环境
开发环境:Sqlserver2008 R2、Visual Studio2012
 
二、准备工作
1、新建MVC空项目
2、通过NuGet获取 EntityFramework 包
 操作截图:
 
 
 
三、代码实现 
  1.建立实体类 
  

  [Table("User")]
public class User
{
[Display(Name="id")]
public int Id {get;set;}
[Display(Name="UserName")]
[Required(ErrorMessage="用户名必填")]
public string UserName { get; set; }
[Display(Name="Password")]
public string Password { get; set; }
}

  

2.构建数据库访问类
   a)、继承DbContext
   b)、创建数据库连接字符串,字符串名称与a)步骤类名称一致,也可不一致(需指定数据库访问串)
  public class DemoConnectionContext : DbContext
{
public DbSet<User> dbuser { get { return Set<User>(); } }
public DemoConnectionContext()
: base("name=DemoConnectionContext") //指定数据库访问串
{
}
static DemoConnectionContext()
{
Database.SetInitializer<DemoConnectionContext>(new DropCreateDatabaseIfModelChanges<DemoConnectionContext>());
}
}

3.数据库操作

//声明数据库操作类
DemoConnectionContext db = new DemoConnectionContext();

  a)、增加数据

User user = new Models.User{UserName = "jay", Password = ""};
db.dbuser.Add(user);
db.SaveChanges();

   b)、查询数据

//指定ID查询
var userObj=db.dbuser.Find(); //写法一
var userObj = db.dbuser.Where(u => u.Id == ).FirstOrDefault(); //写法二
//写法三
var userObj = (from u in db.dbuser
where u.Id ==
select u).ToList();

  c)、更新数据

      //更新表
var userObj = (from u in db.dbuser
where u.UserName == "jay"
select u).ToList();
userObj[].Password = "";
db.dbuser.Attach(userObj[]);
//更新指定列
var setEntry = ((IObjectContextAdapter)db).ObjectContext.ObjectStateManager.GetObjectStateEntry(userObj[]);
setEntry.SetModifiedProperty("Password");
db.SaveChanges();

  d)、删除数据

  

      //删除数据 指定ID即可
User userObj = new User { Id = };
db.dbuser.Attach(userObj);//附加对象
db.dbuser.Remove(userObj);//删除对象
db.SaveChanges();

  e)、事物操作 多表操作,操作放在 TransactionScope

  

       try
{
//事物 多表操作,操作放在 TransactionScope
using (var trac = new TransactionScope())
{
User user = new User { UserName = "jack", Password = "" };
db.dbuser.Add(user);
//throw new Exception("抛出异常");
user = new User { UserName = "David", Password = "" };
db.dbuser.Add(user);
db.SaveChanges();
trac.Complete();//事物提交,如未执行该方法,出事务作用范围自动回滚
}
}
catch (Exception ex)
{
throw; }

  f:)、T-SQL查询
     1) sql 查询,实体类

     //sql 查询,实体类
var userList = db.Database.SqlQuery<User>("select id,UserName,Password from [User]").ToList();

2)指定对象查询实体

  var userList= db.dbuser.SqlQuery("select id,UserName,Password from  [User]").ToList();

3) 执行SQL命令

  db.Database.ExecuteSqlCommand("update [User] set UserName='Michel' where UserName='jay'");
常见错误解答
1、错误信息:The model backing the 'DemoConnectionContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269).
错误信息大体意思为:因实体类属性或实体关系、实体名称发生变化,EF脚本需重新更新数据库信息与实体保持一致。
解决方法:1.备份数据库,关闭所有数据库操作,EF框架自动更新脚本(通常删除库后重新创建库,如果数据库已经在使用,并且不想删除现有数据,不建议使用运行脚本) 
                  2.指定不同步更新数据库,可设置为  Database.SetInitializer<DemoConnectionContext>(null);,手动更新数据库与实体类保持一致
 

.Net EntityFramwork6.0 EF框架开发入门的更多相关文章

  1. LLBL Gen Pro 5.0 企业应用开发入门

    Solutions Design 公司于2016年5月发布了LLBL Gen Pro 5.0,这个新版本的发布出乎于我的意料.我的猜想是从4.2升级到4.5,再升级5.x版本,主版本号的变更会给原有客 ...

  2. Vue实例:vue2.0+ElementUI框架开发pc项目

    开发前准备 vue.js2.0中文,项目所使用的js框架 vue-router,vue.js配套路由 vuex,状态管理 Element,UI框架 1,根据官方指引,构建项目框架 安装vue npm ...

  3. 从零3D基础入门XNA 4.0(1)——3D开发基础

    [题外话] 最近要做一个3D动画演示的程序,由于比较熟悉C#语言,再加上XNA对模型的支持比较好,故选择了XNA平台.不过从网上找到很多XNA的入门文章,发现大都需要一些3D基础,而我之前并没有接触过 ...

  4. Eclipse_luna_J2EE_For_JS+tomcat8.0环境搭建、配置、开发入门

    一.所有需要的软件.插件等下载地址 J2SE的官方下载路径:http://www.oracle.com/technetwork/java/javase/downloads/index.html Ecl ...

  5. Python云端系统开发入门——框架基础

    Django框架基础 这是我学习北京理工大学嵩天老师的<Python云端系统开发入门>课程的笔记,在此我特别感谢老师的精彩讲解和对我的引导. 1.Django简介与安装 Django是一个 ...

  6. 跨平台移动框架iMAG开发入门

    iMAG是一个非常简洁高效的移动跨平台开发框架,开发一次能够同一时候兼容Android和iOS平台,有点儿Web开发基础就能非常快上手.当前移动端跨平台开发的框架有非常多,但用iMAG另一个优点,就是 ...

  7. .NET EF框架的安装、及三种开发模式

    一.EF框架的安装: 要在VS(如Visual Studio 2012)中使用EF框架,就需要先进行安装. 我们需要给这个应用安装EntityFramework包,引入EF框架相关的内容,我们需要引入 ...

  8. net core体系-web应用程序-4asp.net core2.0 项目实战(1)-5项目数据库操作封装操作-EF框架

    EF框架有三种基本的方式:DB First(数据库优先),Model First(模型优先),Code First(代码优先). Entity Framework4.1之前EF支持“Database  ...

  9. ThinkPHP5.0框架开发实现简单的页面跳转

    ThinkPHP5.0框架开发实现简单的页面跳转 一.效果 登录界面 登录成功界面 登录失败界面 二.目录结构 三.代码 控制器中的Login.php <?php // 声明命名空间 names ...

随机推荐

  1. 解决linux安装软件:/lib/ld-linux.so.2: bad ELF interpreter问题

    问题:64位系统中安装了32位程序解决办法 是因为64位系统中安装了32位程序 解决方法: yum install glibc.i686

  2. Spring(十二)Spring之事务

    java中事务是什么? 事务是访问数据库的一个操作序列,DB应用系统通过事务集来完成对数据的存取. 事务必须遵循4个原则,即常说的 ACID A,Automicity,原子性,即事务要么被全部执行,要 ...

  3. quartz.net 3.x 使用总结

    quartz文档:https://www.quartz-scheduler.net/documentation/index.html 这里用新建的控制台项目进行演示. 目标效果为每隔一秒在控制台上输出 ...

  4. html5判断浏览器来源并跳转

    <script type="text/javascript"> var system ={}; var p = navigator.platform; system.w ...

  5. Windows cmd命令反斜杠问题

    在Windows的终端输入命令的时候,如果在命令中存在斜杠就无法执行,因为它只支持反斜杠,而在Unix系统中是支持斜杠的,这是两者的区别.所以在Windows终端下执行命令需要注意斜杠问题

  6. 关于安装了VMware tools后仍然不支持拖拽文件的问题

    我在学校机房里面的redhat4上面安装了VMware tools之后能正常支持拖拽,但是我自己电脑上的却不支持,折腾了好久,网上找了很久也还是没有解决,不过发现了一些问题,总结如下:(当然我总结的这 ...

  7. 《深入理解Bootstrap》读书笔记(一)

    栅格系统 实现原理 通过定义容器大小,平分12份,再调整内外边距,最后结合媒体查询. 通过一系列包含内容的行和列来创建页面布局.下面列出了 Bootstrap 栅格系统是如何工作的: 1.行必须放置在 ...

  8. Selenium webdriver实现截图功能

    可参考http://www.cnblogs.com/tobecrazy/p/3599568.html Webdriver截图时,需要引入: import java.io.File; import ja ...

  9. Keeweb-Linux的密码管理器

    Keeweb-Linux的密码管理器 如今,我们依赖于越来越多的线上服务.我们每注册一个线上服务,就要设置一个密码:如此,我们就不得不记住数以百计的密码.这样对于每个人来说,都很容易忘记密码.那么,下 ...

  10. IntelliJ IDEA 2017.1.5迁移eclipse,SSM项目,通过jrebel实现热部署

    1.首先打开idea,配置SVN版本控制器的路径 2.配置maven 3.配置jrebel热部署的路径 4.从svn到出项目 5.配置配置tomacat参数-server -XX:PermSize=1 ...