博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EntityFramework 5.0 CodeFirst 教程01-搭建环境和快速上手
阅读量:7025 次
发布时间:2019-06-28

本文共 4068 字,大约阅读时间需要 13 分钟。

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

(2015-07-22 17:30)

(2015-07-14 17:50)

(2015-07-13 10:48)

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

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

    首先是电子书的下载,如果想只看电子书的朋友,可以直接下载下来,不用再往下读了。
    下载地址,百度网盘:
    本教程只适合使用,所以一开始就上代码了,如果想掌握各种理论的朋友,可能不适合继续阅读下去,如果想快速地使用上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
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://qjoxl.baihongyu.com/

你可能感兴趣的文章
ZOJ1093 动态规划
查看>>
.Echo 命令中经常提到回显,是什么意思?
查看>>
MySQL在大数据Limit使用
查看>>
iOS中如何创建一个滑出式导航面板(1)
查看>>
Solr5.3.1整合IKAnalyzer
查看>>
Swift - 06 - 数值类型转换和类型别名
查看>>
华为3G模块EM770W在LINUX下的驱动安装
查看>>
omnet++4.0安装使用
查看>>
Jquery JSOPN在WebApi中的问题
查看>>
[React Testing] Conditional className with Shallow Rendering
查看>>
a or an
查看>>
Coursera课程《大家的python》(Python for everyone)课件
查看>>
PHP程序猿必须学习的第二课——站点安全问题预防
查看>>
2016第5周三
查看>>
Spring学习10-SpringMV核心组件2及SpringMVC项目示例
查看>>
hdu 5620 KK's Steel(推理)
查看>>
(笔记)电路设计(十五)之基本电路单元的认识
查看>>
nginx 日志获取不到远程访问ip问题解决
查看>>
有若干个字符串,比較找出当中最大者
查看>>
开源 免费 java CMS - FreeCMS2.0 会员我的评论
查看>>