zoukankan      html  css  js  c++  java
  • Entity Framework基础—第二篇

    实体框架(Entity Framework) 简称EF,属于数据持久(持久保存)层框架里面的一种,其他的还有NHibernate,ibaties,Dapper、PetaPOCO...等,都是基于ORM思想。

    首先介绍下O/R Mapping(ORM)

    1.什么是ORM?ORM指的是面向对象的对象模型和关系数据库的数据结构之间的相互转化,可以理解为把表实体和表相互转化(在任何平台都适用,如php,java等)。

    传统ADO.net操作数据库:

    ado

    基于ORM思想操作数据库:

    ORM

    接下来我们就一步步创建项目:

    这里我是用的vs2012 默认装的是EF5.0,如果你机子没有博客园搜下如何安装,这里就不介绍了,

    首先我们新建一个项目,在项目中添加新建项如下图:

    创建EF1

    点击添加下图:

    创建EF2

    我们这选择从数据库生成:

    创建EF3

    这里我们点击新建连接:

    image

    选择完毕之后点确定:

    image

    这里一定要设置"是",你可以点下"否"看看实体链接字符串跟"是"有什么区别,点击下一步:

     image

    点击完成,就OK了,根据数据库生成的实体如下图:

    image

    看下解决方案管理器中都生成了什么文件:

    创建EF6

    那么我们打开DataModel.Context.cs看下里面的内容:

    创建EF7

    我们简单的写个CRUD:

    1.添加

    //1.声明一个EF的上下文
    DemoTestEntities dbContext= new DemoTestEntities();
    //2.声明一个实体
    UserInfo userInfo = new UserInfo();
    userInfo.Age = 18;
    //3.告诉EF对上面的实体进行添加操作aa
    dbContext.UserInfo.Add(userInfo);
    //4.告诉上下文把实体的变化保存到数据库里面去
    dbContext.SaveChanges();

    2.查询

    static void Main(string[] args)
            {
                //查询操作
                DemoTestEntities dbContext = new DemoTestEntities();
                List<UserInfo> list = dbContext.UserInfo.Where(u => u.Name == "小贱").ToList();
                list.ForEach(u => Console.WriteLine(u.ToString()));
                Console.ReadKey();
            }
     public partial class UserInfo
    {
            public override string ToString()//重写tostring()
            {
                return this.Age + "," + this.Name;
            }
    }

    3.修改

    static void Main(string[] args)
            {
    
                //修改操作
                DemoTestEntities dbContext = new DemoTestEntities();
                UserInfo userInfo = new UserInfo();
                userInfo.Name = "小贱";
                userInfo.Age = 20;
                userInfo.UserId = 1;//修改删除的时候必须指定id
                //告诉上下文对此实体做修改操作
                dbContext.Entry<UserInfo>(userInfo).State = System.Data.EntityState.Modified;
                //修改数据库某一列中的数据
                //dbContext.Entry<UserInfo>(userInfo).Property<string>(u => u.Name).IsModified = true;
                //修改数据库某一列中的数据第二种写法
                //dbContext.Entry<UserInfo>(userInfo).State = System.Data.EntityState.Unchanged;
                //dbContext.Entry<UserInfo>(userInfo).Property("Name").IsModified = true;
                 dbContext.SaveChanges();
            }

    4.删除

    static void Main(string[] args)
            {
    
                //删除操作
                DemoTestEntities dbContext = new DemoTestEntities();
                UserInfo userInfo = new UserInfo();
                userInfo.Name = "小贱";
                userInfo.Age = 20;
                userInfo.UserId = 1;//修改删除的时候必须指定id
                //告诉上下文对此实体做删除操作
                dbContext.Entry<UserInfo>(userInfo).State = System.Data.EntityState.Deleted;
                 dbContext.SaveChanges();
            }
    View Code
  • 相关阅读:
    在asp.net中执行存储过程(转)
    Linux DM9000网卡驱动程序完全分析
    Linux内核态抢占机制分析(转)
    操作系统原理(转)
    Keil4 每次选build 编译(F7)都全部编译的解决办法
    内核必看: spinlock、 mutex 以及 semaphore
    linux内核代码container_of
    Win10玩魔兽争霸不能全屏显示的设置教程
    在vmware里面免费安装纯净的xp虚拟机
    IAR之工程配置
  • 原文地址:https://www.cnblogs.com/wangxiaojian/p/4349253.html
Copyright © 2011-2022 走看看