EF CodeFirst Dome学习
Posted net 小雪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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学习的主要内容,如果未能解决你的问题,请参考以下文章