创建ConsoleDome控制台应用程序

从NuGet包管理器安装EntityFramework

创建DbContextDome类并继承DbContext

public class DbContextClass : DbContext
{
/// <summary>
/// ConnectionString就是在config中设置的数据库链接字符串
/// </summary>
public DbContextClass()
: base("ConnectionString")
{ } public DbSet<user> user { get; set; } public DbSet<BlogModel> blog { get; set; }
}

设置config

<connectionStrings>
<add name="ConnectionString" connectionString="server=.;database=EFCodeFirstDB;uid=***;pwd=***" providerName="System.Data.SqlClient"/>
</connectionStrings>

创建实体模型

 public class user
{
public int id { get; set; } public string username { get; set; } public string pwd { get; set; } [Column(TypeName = "nvarchar")]
[MaxLength(200)]
public string Email { get; set; }
public string pwdd { get; set; }
} public class BlogModel
{
public int id { get; set; }
/// <summary>
///
/// </summary>
public string Tiele { get; set; }
/// <summary>
///
/// </summary>
public string TieleUrl { get; set; }
/// <summary>
///
/// </summary>
public string Content { get; set; }
/// <summary>
///
/// </summary>
public string ImgUrl { get; set; }
/// <summary>
///
/// </summary>
public DateTime CreateDate { get; set; }
/// <summary>
///
/// </summary>
public string ReadNumber { get; set; }
}

  在程序包管理器控制台执行Enable-Migrations来创建Configuration配置ef

最后执行Update-Database -Verbose来更新数据库

附加codefirst命令

一、Enable-Migrations

  说明:为项目启用迁移。此命令为项目添加Migrations文件夹,其中包括两个文件:

    Configuration类:此类允许针对上下文配置迁移的行为

    InitialCreate迁移:此迁移在启用迁移之前生成。如果在启用迁移之前没有生成数据库,则不会将此文件加入到项目中,而是在首次调用"Add-Migration"命令时生成。

  语法:Enable-Migrations

二、Add-Migration

  说明:根据上一次迁移以来对模型所做的更改,为下一次迁移搭建基架。

  语法:Add-Migration "[Name]"

     Name:迁移显示名字,将与当前生成文件时间戳构成生成的迁移文件名

三、Update-DataBase

  说明:将所有挂起的迁移应用与数据库

  语法:Update-Database -[Option]

     Option:Vcrbose 在控制台显示迁移所运行的SQL

          TargetMigration:[Name] 迁移到特定的版本,如果需要回滚到空数据库,则可以将[Name]写为$InitialDatabase

          Script 是迁移生成脚本而不执行

          SourceMigration:[Name]源迁移

四、自动迁移

  说明:在部署应用程序时希望在应用程序启动时通过虽有挂起的迁移自动升级数据库

  代码:Database.SetInitializer(new MigrateDatabaseToLatestVersion<DbContext, Configuration>()); 

五、性能问题

EFlinq的性能远不如sql,在EF中有SqlQuery接口,查询效率高出很多,另外AsNoTracking设置不跟踪查询(只做查询使用)。在EF中如果只是为了筛选实体或者改变实体的变量不要使用ToList,效率极低,用AsEnumerable或AsQueryable。

EF CodeFirst Dome学习的更多相关文章

  1. EF Codefirst 初步学习(二)—— 程序管理命令 更新数据库

    前提:搭建成功codefirst相关代码,参见EF Codefirst  初步学习(一)--设置codefirst开发模式 具体需要注意点如下: 1.确保实体类库程序生成成功 2.确保实体表类库不缺少 ...

  2. EF CodeFirst学习

    EF CodeFirst 真是时光如梦,岁月如歌,自己一不留神就被后浪拍在了沙滩上,就连我要学的这个东西也是12年就在博客园很火了. EF有三种开发模式,DatabaseFirst, ModelFir ...

  3. 1.【使用EF Code-First方式和Fluent API来探讨EF中的关系】

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/relationship-in-entity-framework-using-code-firs ...

  4. EF Code First学习系列

    EF Model First在实际工作中基本用不到,前段时间学了一下,大概的了解一下.现在开始学习Code First这种方式.这也是在实际工作中用到最多的方式. 下面先给出一些目录: 1.什么是Co ...

  5. [.NET领域驱动设计实战系列]专题一:前期准备之EF CodeFirst

    一.前言 从去年已经接触领域驱动设计(Domain-Driven Design)了,当时就想自己搭建一个DDD框架,所以当时看了很多DDD方面的书,例如领域驱动模式与实战,领域驱动设计:软件核心复杂性 ...

  6. EF CodeFirst 如何通过配置自动创建数据库<当模型改变时>

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    本篇为进阶篇,也是弥补自己之前没搞明白的地方,惭愧 ...

  7. EF CodeFirst增删改查之‘CRUD’

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    本篇旨在学习EF增删改查四大操作 上一节讲述了EF ...

  8. EF CodeFirst 创建数据库

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    话说EF支持三种模式:Code First   M ...

  9. EF Codefirst 中间表(关系表)的增删改查(转)

    EF Codefirst 多对多关系 操作中间表的 增删改查(CRUD)   前言 此文章只是为了给新手程序员,和经验不多的程序员,在学习ef和lambada表达式的过程中可能遇到的问题. 本次使用订 ...

随机推荐

  1. linux 上使用yum 安装openjdk1.8

    使用yum查找jdk: yum search java|grep jdk # yum search java|grep jdk ldapjdk-javadoc.noarch : Javadoc for ...

  2. phpstudy(小皮面板)和phpstudy2018 配置php的区别

    phpstudy(小皮面板)和phpstudy2018 配置php的区别 一.总结 一句话总结: phpstudy(小皮面板) 和 phpstudy2018 只是引入的php的位置不同,但是核心代码还 ...

  3. Inno setup 判断系统32位还是64位

    [Files] ; Install MyProg-x64.exe -bit mode (x64; see above), ; Check: Is64BitInstallMode 表示是64位windo ...

  4. C# 序列化与反序列化之Binary与Soap无法对泛型List<T>进行序列化的解决方案

    C# 序列化与反序列化之Binary与Soap无法对泛型List<T>进行序列化的解决方案 新建Console控制台项目项目,然后添加Team和Person 这2个类,如下: Team和P ...

  5. git 常用命令的总结

    1. git 查看分支 git branch (星号代表当前的分支) 2. 创建一个本地分支 git checkout -b 分支名称 3. 将本地新建分支提交到远程 git push origin ...

  6. node.js GET与POST请求

    node.js GET与POST请求 转 http://www.voidcn.com/article/p-ncglaiqx-bdx.html 标签 get post node.js 栏目 Node.j ...

  7. 【C#】使用C# 读取Http的Post数据

    private string Post(string num) { Encoding myEncoding = Encoding.GetEncoding("gb2312"); // ...

  8. java中静态方法中为什么不能使用this、super和直接调用非静态方法

    这个要从java的内存机制去分析,首先当你New 一个对象的时候,并不是先在堆中为对象开辟内存空间,而是先将类中的静态方法(带有static修饰的静态函数)的代码加载到一个叫做方法区的地方,然后再在堆 ...

  9. 【APM】Pinpoint 安装部署(一)

    Pinpoint简介 Pinpoint是用Java / PHP编写的大规模分布式系统的APM(应用程序性能管理)工具.受Dapper的启发,Pinpoint提供了一种解决方案,可通过跟踪跨分布式应用程 ...

  10. 研发团队是该制定OKR还是KPI?

    绩效管理和OKR的目标管理,是前行的两条腿,缺谁都会寸步难行.正确的做法是把企业的使命和任务,转化为经营目标,然后再用KPI.OKR等绩效管理工具,分解.执行.考核.. KPI是一套绩效管理的方法.全 ...