EntityFramework 5.0 CodeFirst 教程01-搭建环境和快速上手

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

EntityFramework 5.0 CodeFirst 教程01-搭建环境和快速上手

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

网上关于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

整个类如下:

 public class Person
    {
        public int PersonId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }

我们再创建一个PersonContext 上下文类,需要继承DbContext

public class PersonContext : DbContext
    {
        public PersonContext()
            : base("name=dblink")
        {
        }
        public DbSet<Person> People { get; set; }
    }

细心的同学可能看到构造方法后面的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方法中添加下面代码

class Program
    {
        static void Main(string[] args)
        {
            using (var personContext = new PersonContext())
            {
                //如果不存在数据库则创建
                bool res = personContext.Database.CreateIfNotExists();
            }
            Console.ReadKey();
        }
    }

我们再查找数据库,发现已经自动地创建好了数据库还有表了,看下图:

这里有一点要注意的:

就是实体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方法中加入下面代码

 //往数据库中添加数据
var person = new Person
{
    FirstName = "John",
    LastName = "Doe"
};
personContext.People.Add(person);
personContext.SaveChanges();

执行后 查询表发现记录已经添加进去了

所有的操作基本都是通过这个context上下文来实现,比如添加记录,只需要add一个实体进去 然后再savechanges 这个方法执行后,EF才会将数据保存到表里面。

下面再来获取表中的数据

 //获取数据
var savedPeople = personContext.People;
foreach (var p in savedPeople)
{
    Console.WriteLine("Last name:{0},first name:{1},id {2}",
    p.LastName, p.FirstName, p.PersonId);
}

获取数据也很简单,这里是获取所有的记录,然后遍历就可以取得数据了,非常方便

当我们执行多次刚才的代码的时候,EF会添加多条记录进去,并且ID也不一样了,ID主键是自增长的

所有代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var personContext = new PersonContext())
            {
                //如果不存在数据库则创建
                bool res = personContext.Database.CreateIfNotExists();
                //往数据库中添加数据
                var person = new Person
                {
                    FirstName = "John",
                    LastName = "Doe"
                };
                personContext.People.Add(person);
                personContext.SaveChanges();
                //获取数据
                var savedPeople = personContext.People;
                foreach (var p in savedPeople)
                {
                    Console.WriteLine("Last name:{0},first name:{1},id {2}",
                    p.LastName, p.FirstName, p.PersonId);
                }
            }
            Console.ReadKey();
        }
    }
}

代码结构:

本集源码:

http://pan.baidu.com/s/12lwo2

时间: 2024-10-08 00:52:21

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

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

-----------------------------------------------------目录----------------------------------------------------- EntityFramework 5.0 CodeFirst 教程01-搭建环境和快速上手 (2015-07-13 10:48) EntityFramework 5.0 CodeFirst 教程02-删除和修改/架构改变异常的处理 (2015-07-14 17:50) -------

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

---------------------目录-------------------------- 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)

DirectX10学习笔记&lt;01&gt; 搭建环境-在Visual Studio中配置DirectX

一.工具下载 IDE:Visual Studio 2008 SDK:DirectX SDK,可以从Microsoft的网站上免费下载到.SDK中还包含示例.工具和文档.自带的工具很有用,我们会经常使用其中的DDS纹理工具. 二.设置Visual Studio 2008 菜单栏->Tools->Options... 左边选择Projects and Solutions->VC++ Directories 右边Show directiories for:选择Include files,往下列

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

一.SpringBoot 框架的特点 1.SpringBoot2.0 特点 1)SpringBoot继承了Spring优秀的基因,上手难度小 2)简化配置,提供各种默认配置来简化项目配置 3)内嵌式容器简化Web项目,简化编码 Spring Boot 则会帮助开发着快速启动一个 web 容器,在 Spring Boot 中,只需要在 pom 文件中添加如下一个 starter-web 依赖即可. <dependency> <groupId>org.springframework.b

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

由于工作需要,接触了大半年时间的Django+xadmin框架,一直没空对这块对进行相关的梳理.最近在同事的怂恿下,就在这分享下笔者的学习及工作经验吧. 好了,话不多说,下面开始进入正题: 环境需求: 笔者的工作系统环境:Mac 10.13.4+Python3.6.x+Django2.0.x+Xadmin2.0 因此本系列教程均是以此组合为基础展开讲解.其他系统版本也基本适用,有小部分不兼容之处请自行测试. 一.Django及xadmin安装 可以使用pip命令进行安装,或者直接下载安装包用py

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

1 安装nodejsv6.10.3 下载地址  https://nodejs.org/dist/v6.10.3/node-v6.10.3-x64.msi 2 安装 NTVS(Node.js Tools for Visual Studio)  1.2for vs2015 vs-工具-扩展和更新,新窗口 左侧选择 联机-vs库 搜索ntvs,下载安装 3 打开vs2015  文件-新建-项目,按图创建 创建好的项目目录结构如图 4 点击调试按钮打开浏览器,即可看到运行的项目 http://local

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

阅读文档:使用 PyTorch 进行深度学习:60分钟快速入门. 本教程的目标是: 总体上理解 PyTorch 的张量库和神经网络 训练一个小的神经网络来进行图像分类 PyTorch 是个啥? 这是基于 Python 的科学计算包,其目标是: 替换 NumPy,发挥 GPU 的作用 一个提供最大灵活性和速度的深度学习研究平台 起步 PyTorch 中的 Tensor 类似于 NumPy 中的 ndarray(这一点类似于 TensorFlow),只不过张量可以充分利用 GPU 来进行加速计算.

《微信公众平台快速上手教程》目录导航,刘子骏de新媒体,图解版本

10年互联网从业者,草根创业者,新媒体营销研究者.作者博客:www.liuzijun.com 有些公众平台的基本用法可以参照上面的教程. 微信公众平台快速上手教程Part1 注册账户与认证 微信公众平台快速上手教程Part2 消息管理与群发 微信公众平台快速上手教程Part3 素材编辑 微信公众平台快速上手教程Part4 关键词自动回复 微信公众平台快速上手教程Part5 开发模式讲解 微信公众平台快速上手教程Part6 公众会议帐号 微信公众平台快速上手教程Part7 微信运营十大要决 微信公

Nukkit插件从0开始:搭建环境

系列作者:粉鞋大妈 文章出处:http://www.cnblogs.com/xtypr 欢迎转载.翻译,也请保留这段声明,不胜感激. Nukkit插件从0开始:搭建环境 上一篇:没了 目录:Nukkit插件从0开始 下一篇:还没写 考虑到许多读者是第一次接触Java编程,或者把Nukkit插件作为自己的第一个Java应用,我将以图文详细讲解所有步骤,若有不好见谅. 安装Java 8 由于Nukkit使用Java 8的新特性来优化性能和代码可读性,你必须安装jdk 8来开发Nukkit插件. 打开