EF CodeFirst Dome学习
创建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学习的更多相关文章
- EF Codefirst 初步学习(二)—— 程序管理命令 更新数据库
前提:搭建成功codefirst相关代码,参见EF Codefirst 初步学习(一)--设置codefirst开发模式 具体需要注意点如下: 1.确保实体类库程序生成成功 2.确保实体表类库不缺少 ...
- EF CodeFirst学习
EF CodeFirst 真是时光如梦,岁月如歌,自己一不留神就被后浪拍在了沙滩上,就连我要学的这个东西也是12年就在博客园很火了. EF有三种开发模式,DatabaseFirst, ModelFir ...
- 1.【使用EF Code-First方式和Fluent API来探讨EF中的关系】
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/relationship-in-entity-framework-using-code-firs ...
- EF Code First学习系列
EF Model First在实际工作中基本用不到,前段时间学了一下,大概的了解一下.现在开始学习Code First这种方式.这也是在实际工作中用到最多的方式. 下面先给出一些目录: 1.什么是Co ...
- [.NET领域驱动设计实战系列]专题一:前期准备之EF CodeFirst
一.前言 从去年已经接触领域驱动设计(Domain-Driven Design)了,当时就想自己搭建一个DDD框架,所以当时看了很多DDD方面的书,例如领域驱动模式与实战,领域驱动设计:软件核心复杂性 ...
- EF CodeFirst 如何通过配置自动创建数据库<当模型改变时>
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 本篇为进阶篇,也是弥补自己之前没搞明白的地方,惭愧 ...
- EF CodeFirst增删改查之‘CRUD’
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 本篇旨在学习EF增删改查四大操作 上一节讲述了EF ...
- EF CodeFirst 创建数据库
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 话说EF支持三种模式:Code First M ...
- EF Codefirst 中间表(关系表)的增删改查(转)
EF Codefirst 多对多关系 操作中间表的 增删改查(CRUD) 前言 此文章只是为了给新手程序员,和经验不多的程序员,在学习ef和lambada表达式的过程中可能遇到的问题. 本次使用订 ...
随机推荐
- npm安装插件怎么判断是--save 还是--save--dev
npm敲到一半的时候发现:诶 这个到底是-g呢还是--save还是--save-dev呢 1.首先要先了解package.json 在Node.js中,模块是一个库或框架,也是一个Node.js项目. ...
- java基础 小知识点汇总篇
1.&和&& |和|| 的区别? a&b,会执行a,执行b ,得出结论 a&&b,会执行a,如果a false,则不执行b,直接返回false 2.Ma ...
- Android Sensor详解(1)简介与架构【转】
本文转载自:https://blog.csdn.net/u013983194/article/details/53244686 最近在学习有关如何porting sensor的东西,仅借此机会写博客来 ...
- RSA加密和数字签名在Java中常见应用【原创】
相关术语解释: RSA,参考: https://en.wikipedia.org/wiki/RSA_(cryptosystem) 非对称加密算法 ,参考:https://baike.baidu.com ...
- EF获取当天的数据集合
).DefaultIfEmpty().Count(); 主要是使用了: DbFunctions.DiffDays
- Vue 项目中断点没有跳转到指定源码的问题
将配置中 devtool 改为以下即可. devtool: 'source-map' 如果是在 vue-cli 2.x ,那么就在 webpack.dev.config.js 中 如果是 vue-cl ...
- paddlepaddle如何预加载embedding向量
使用小批量数据时,模型容易过拟合,所以需要对全量数据进行处理,我是用的是word2vec训练的词向量. 那么训练好对词向量如何加载呢? #!/usr/bin/env python # -*- codi ...
- spring MVC cors跨域实现源码解析 CorsConfiguration UrlBasedCorsConfigurationSource
spring MVC cors跨域实现源码解析 spring MVC cors跨域实现源码解析 名词解释:跨域资源共享(Cross-Origin Resource Sharing) 简单说就是只要协议 ...
- 002-Python3-基础语法-赋值、显示类型、数据类型[数值、字符串、列表、元祖、集合、字典]
一.基础语法 参看地址:https://www.runoob.com/python3/python3-tutorial.html 基础数据类型 Python 中的变量不需要声明.每个变量在使用前都必须 ...
- SDN实验---Ryu的源码分析
一:安装Pycharm https://www.cnblogs.com/huozf/p/9304396.html(有可取之处) https://www.jetbrains.com/idea/buy/# ...