----------------------------目录------------------------------

EntityFramework 5.0 CodeFirst 教程03-数据结构的定义/列的属性 (2015-07-22 17:30)

EntityFramework 5.0 CodeFirst 教程02-删除和修改/架构改变异常的处理 (2015-07-14 17:50)

EntityFramework 5.0 CodeFirst 教程01-搭建环境和快速上手 (2015-07-13 10:48)

----------------------------目录------------------------------

网上关于EntityFramework 5.0的教程很多,但是大多数都是代码整理不清晰,有些甚至是拷贝,代码丢失等问题,本人最近也有一个项目是用到EntityFramework 5.0 并且是code first的使用方式,鉴于这个在谷歌上面找了一本国外人写的code first的电子书,英文版的,配合着电子词典看下去,感觉不错,写的非常清晰有条理,所以分享给大家。

    首先是电子书的下载,如果想只看电子书的朋友,可以直接下载下来,不用再往下读了。
    下载地址,百度网盘:http://pan.baidu.com/s/1bne2QsR
    本教程只适合使用,所以一开始就上代码了,如果想掌握各种理论的朋友,可能不适合继续阅读下去,如果想快速地使用上EntityFramework 5.0 CodeFirst ,可以阅读下去
    创建一个.NET 4.5的控制台应用程序,本人使用的VS 2013 建议读者也使用这个IDE
   
    就是一个控制台应用程序,下面引用EntityFramework.dll 
    首先我们来创建一个Person的类,只有 有姓FirstName 和名LastName 还有主键ID(PersonId)
  一切从简单开始,不大喜欢像其他教程一样,例子都搞得非常复杂,例子应该要抓住核心,排除其他的和主题不关的 bamn.cn
    整个类如下: 

  1. public class Person
  2. {
  3. public int PersonId { get; set; }
  4. public string FirstName { get; set; }
  5. public string LastName { get; set; }
  6. }
    我们再创建一个PersonContext 上下文类,需要继承DbContext

  1. public class PersonContext : DbContext
  2. {
  3. public PersonContext()
  4. : base("name=dblink")
  5. {
  6. }
  7. public DbSet<Person> People { get; set; }
  8. }
   细心的同学可能看到构造方法后面的base("name=dblink") 这里的dblink就是数据库连接名称了 看下面的配置文件就清楚了
然后就是数据库的连接了,在配置文件app.config中添加链接字符串
   <?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="dblink"
    connectionString="Data Source=.\MSSQLSERVER2008;Initial Catalog=EFDemo;User ID=sa;Password=123321;"
    providerName="System.Data.SqlClient"/>
  </connectionStrings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>
    
  下面我们就对数据库进行操作了,首先是创建数据库,创建数据库试用EF只需要一句代码就可以了,EF会帮我们将数据库还有数据表创建好的
我们在program.cs的main方法中添加下面代码

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. using (var personContext = new PersonContext())
  6. {
  7. //如果不存在数据库则创建
  8. bool res = personContext.Database.CreateIfNotExists();
  9. }
  10. Console.ReadKey();
  11. }
  12. }
我们再查找数据库,发现已经自动地创建好了数据库还有表了,看下图:
 
这里有一点要注意的:
   就是实体Person创建的时候,需要一个主键,这个主键必须是类名+ID 比如 这里的PersonId 如果你改成其他的比如
你将类改为PersonModel 但是ID还是 PersonId 那么久会报下面的错误了,这里大家要注意的地方,还有就是这里的ID 可以写成Id都没问题的,这个应该是微软的EF框架约定俗成的一个地方吧。
 
One or more validation errors were detected during model generation:
\tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'PersonModel' has no key defined. Define the key for this EntityType.
\tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'People' is based on type 'PersonModel' that has no keys defined.
 
下面我们来添加一条数据到表中
 
 在main方法中加入下面代码
  
  1. //往数据库中添加数据
  2. var person = new Person
  3. {
  4. FirstName = "John",
  5. LastName = "Doe"
  6. };
  7. personContext.People.Add(person);
  8. personContext.SaveChanges();
执行后 查询表发现记录已经添加进去了
 
所有的操作基本都是通过这个context上下文来实现,比如添加记录,只需要add一个实体进去 然后再savechanges 这个方法执行后,EF才会将数据保存到表里面。
 
下面再来获取表中的数据
  1. //获取数据
  2. var savedPeople = personContext.People;
  3. foreach (var p in savedPeople)
  4. {
  5. Console.WriteLine("Last name:{0},first name:{1},id {2}",
  6. p.LastName, p.FirstName, p.PersonId);
  7. }
获取数据也很简单,这里是获取所有的记录,然后遍历就可以取得数据了,非常方便
当我们执行多次刚才的代码的时候,EF会添加多条记录进去,并且ID也不一样了,ID主键是自增长的
 
 
 所有代码如下:
 
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace ConsoleApplication2
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. using (var personContext = new PersonContext())
  13. {
  14. //如果不存在数据库则创建
  15. bool res = personContext.Database.CreateIfNotExists();
  16. //往数据库中添加数据
  17. var person = new Person
  18. {
  19. FirstName = "John",
  20. LastName = "Doe"
  21. };
  22. personContext.People.Add(person);
  23. personContext.SaveChanges();
  24. //获取数据
  25. var savedPeople = personContext.People;
  26. foreach (var p in savedPeople)
  27. {
  28. Console.WriteLine("Last name:{0},first name:{1},id {2}",
  29. p.LastName, p.FirstName, p.PersonId);
  30. }
  31. }
  32. Console.ReadKey();
  33. }
  34. }
  35. }
代码结构:
本集源码:
 
   

EntityFramework 5.0 CodeFirst 教程01-搭建环境和快速上手的更多相关文章

  1. EntityFramework 5.0 CodeFirst 教程02-删除和修改/架构改变异常的处理

    -----------------------------------------------------目录--------------------------------------------- ...

  2. EntityFramework 5.0 CodeFirst 教程04-查询,插入,更新,和删除数据

    ---------------------目录-------------------------- EntityFramework 5.0 CodeFirst 教程04-查询,插入,更新,和删除数据  ...

  3. EntityFramework 5.0 CodeFirst 教程03-数据结构的定义/列的属性

    ---------------------目录-------------------------- EntityFramework 5.0 CodeFirst 教程03-数据结构的定义/列的属性 (2 ...

  4. SpringBoot2.0基础案例(01):环境搭建和RestFul风格接口

    一.SpringBoot 框架的特点 1.SpringBoot2.0 特点 1)SpringBoot继承了Spring优秀的基因,上手难度小 2)简化配置,提供各种默认配置来简化项目配置 3)内嵌式容 ...

  5. 【Python3.6+Django2.0+Xadmin2.0系列教程一】环境搭建及项目创建

    由于工作需要,接触了大半年时间的Django+xadmin框架,一直没空对这块对进行相关的梳理.最近在同事的怂恿下,就在这分享下笔者的学习及工作经验吧. 好了,话不多说,下面开始进入正题: 环境需求: ...

  6. linux Cenos-7.0下安装jdk搭建环境变量

    搭建linux系统的java环境本人目前所知有两种方式: 第一种是从oracle官网下载linux系统的jdk版本: 第二种是使用yum命令的方式下载安装,咱们今天讲的是第一种方式. 一.工具准备: ...

  7. visual studio 2015开发nodejs教程1搭建环境

    http://sailsdoc.swift.ren/ 这里有 sails中文文档 1 安装nodejsv6.10.3 下载地址  https://nodejs.org/dist/v6.10.3/nod ...

  8. 【PyTorch v1.1.0文档研习】60分钟快速上手

    阅读文档:使用 PyTorch 进行深度学习:60分钟快速入门. 本教程的目标是: 总体上理解 PyTorch 的张量库和神经网络 训练一个小的神经网络来进行图像分类 PyTorch 是个啥? 这是基 ...

  9. Greenplum5.16.0 安装教程

    Greenplum5.16.0 安装教程 一.环境说明 1.1官方网站 Greenplum官方安装说明:https://gpdb.docs.pivotal.io/5160/install_guide/ ...

随机推荐

  1. 在bat中执行sql,并配置windows计划任务,并隐藏命令窗口 (转)

    1.创建一个sql文件,test.sql: INSERT INTO TR_HK_RC_TEMPERATURE2 (HWINSTANCEID, KPIITEMID, BRANCHID, COLLECTT ...

  2. 如何在Windows版的ScaleIO的节点中添加磁盘

    嗯, 为什么会有这个问题呢? 因为我要安装ScaleIO 1.32, 在使用Installation manager完成初始安装之后, 需要将一些磁盘添加到ScaleIO的storage pool中. ...

  3. mongodb 按配置文件mongodb.conf启动

    命令如下 mongod --config /etc/mongodb.conf

  4. 什么是JSP (转)

    http://blog.csdn.net/javaloveiphone/article/details/7937170 一.什么是JSP(JavaServer Pages),原来是没有jsp的,只有s ...

  5. Eclipse QuickSear的插件的说明

    https://spring.io/blog/2013/07/11/eclipse-quick-search Eclipse QuickSear的插件的说明

  6. (转)Pixel-Fillrate显卡像素填充率

    [Pixel-Fillrate] “填充率“以每秒钟填充的像素点为单位,“三角形(多边形)生成速度“则表示每秒钟三角形(多边形)生成个数.现在的3D显卡的性能也主要看着两项指标,这两项指标的数值越大, ...

  7. Android面试题收集

    Android是一种基于Linux的自由及开放源码的操作系统,主要使用于移动设备.如智能手机和平板电脑.由Google公司和开放手机联盟领导及开发.这里会不断收集和更新Android基础相关的面试题, ...

  8. Sql控制反转小尝试

    假想用配置Sql语句的方式来完毕一个处理逻辑,而且映射到一个Url,这样当请求这个url的时候,运行前面配置的sql. 以下的一段详细配置,比如 当请求pagerlistdept.do的时候,会传入參 ...

  9. 详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点

    转自:http://www.jb51.net/article/100111.htm 首先我们需要安装好Nginx.jdk.Tomcat,安装方法已经在 上一篇 说过了,本篇不再赘述. 下来看一下我们的 ...

  10. iOS 生成pem证书

    openssl pkcs12 -in Certificates.p12 -out Certificates.pem -nodes     需要通过终端命令将这些文件转换为PEM格式:openssl p ...