///安装ef  nuget中文控制台指令
PM> Install-Package EntityFramework.zh-Hans
<!--配置数据库连接-->
<connectionStrings>
<add name="Conn" connectionString="server=?;uid=?;pwd=?;database=?" providerName="System.Data.SqlClient" />
</connectionStrings>
<!--简单的Entity Framework连接教程-->https://blog.csdn.net/qq_33459121/article/details/81559793
常用命令集合:

1. 【Enable-Migrations】开启数据迁移,开启后项目中会添加【Migrations】文件夹。

  相关命令:【Enable-Migrations -EnableAutomaticMigrations 】开启自动数据迁移,不产生代码文件

2. 【Add-Migration <自定义文件名>】生成数据迁移更新文件,如Add-Migration AddPost

3. 【Update-Database】更新数据库结构

  相关命令:【Update-Database -Verbose】更新数据库结构,并显示执行的SQL

       【Update-Database -TargetMigration <要降级到的文件名>】降级,自定义文件名为Add-Migration时输入的文件名,空数据库文件名为$InitialDatabase,如 Update-Database -TargetMigration AddPost

       【Update-Database -Script -SourceMigration: <源> -TargetMigration: <目标>】,生成数据库SQL,只生成不执行数据更新,如Update-Database -Script -SourceMigration: $InitialDatabase -TargetMigration: AddPostAbstract

       运行 Update-Database 命令,但此时指定 –Script 标记,使更改写入脚本而不应用。我们还将指定为其生成脚本的源和目标迁移。我们希望脚本用于从空数据库 ($InitialDatabase) 最新版本(迁移 AddPostAbstract)的迁移。如果不希望指定目标迁移,迁移将使用最新迁移作为目标。如果未指定源迁移,迁移将使用数据库的当前状态。

       【Update-Database -ConnectionString "Server=localhost; Database=MyAbpZeroProject; User=sa; Password=;" -ConnectionProviderName "System.Data.SqlClient" -ProjectName "Abp.Samples.Blog.EntityFramework" -Verbose】指定更新连接

4. 在程序启动时,自动执行更新,不需要人手update-database,在程序启用时添加

 Database.SetInitializer(new MigrateDatabaseToLatestVersion<BlogContext, Configuration>()); 

 BlogContext为DbContext,Configuration是Migrations文件夹里面的Configuration.cs

public class SchoolContext : DbContext
{
public SchoolContext() : base("SchoolContext")
{
// 这是默认的数据库初始化策略。就像它的名称那样,如果根据配置,数据库不存在的话,就会创建数据库。但是如果你改变模型类,使用这个策略,再运行程序的话,就会抛出一个异常。
//Database.SetInitializer<SchoolContext>(new CreateDatabaseIfNotExists<SchoolContext>());
// 这个策略会在你的模型发生改变的时候,删除已经存在的数据库,然后创建一个新的数据库。所以当你模型改变的时候,不必担心怎么来维护数据库对象模式。
//Database.SetInitializer<SchoolContext>(new DropCreateDatabaseIfModelChanges<SchoolContext>());
// 就像其名称所示,这个策略每次你运行程序的时候,都会删除以及存在的数据库,而不管你的模型类 是否发生改变。这个策略非常有用,当你每次运行程序,都想要一个新的数据库的时候。例如:当你在开发程序的时候。使用这个策略比较好。
//Database.SetInitializer<SchoolContext>(new DropCreateDatabaseAlways<SchoolContext>());
// Custom DB Initializer: 如果上面的策略不满足你的需求或者数据库初始化的时候,你想额外做一些其他的处理的时候, 你就可以创建你自己的数据库初始化策略。
Database.SetInitializer<SchoolContext>(new SchoolInitializer());
}

public DbSet<Student> Students { get; set; }
public DbSet<Enrollment> Enrollments { get; set; }
public DbSet<Course> Courses { get; set; }
public DbSet<Department> Department { get; set; }
public DbSet<School> School { get; set; }
public DbSet<ClassNo> ClassNo { get; set; }
public DbSet<SN> SN { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//防止数据库生成的表是复数形式
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

//Database.SetInitializer<SchoolContext>(new SchoolInitializer());
}

        /// <summary>
/// 重写ef SaveChanges方法
/// </summary>
/// <returns></returns>
public override int SaveChanges()
{
ChangeTracker.DetectChanges(); // Important!
var modifiedEntities = this.ChangeTracker
.Entries()
.Where(x => x.State == EntityState.Modified)
.Select(x => x.Entity)
.ToList();
foreach (var entity in modifiedEntities)
{
var baseEntity = entity as Entities;
if (baseEntity != null)
{
baseEntity.CreationTime = DateTime.Now;
}
}
return base.SaveChanges();
}
The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' registered in the application config file for the ADO.NET provider with invariant name

BIN目录下没有生成EntityFramework.SqlServer.dll

解决办法 1查看该dll属性  复制到本地改为true
解决办法 2 EF6包不仅需要在类库项目安装,还需要在引用该类库的项目中安装.
可以通过注解或者api的方式为guid类型的数据设置自增长,分别是:
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
this.Property(t => t.Identifier).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); //Guid类型主键自增长
//https://www.cnblogs.com/oppoic/p/ef_databasegeneratedoption_timestamp_concurrencycheck_complextype.html

Entity Framework学习过程的更多相关文章

  1. 《Entity Framework 6 Recipes》翻译系列 (1) -----第一章 开始使用实体框架之历史和框架简述

    微软的Entity Framework 受到越来越多人的关注和使用,Entity Framework7.0版本也即将发行.虽然已经开源,可遗憾的是,国内没有关于它的书籍,更不用说好书了,可能是因为EF ...

  2. Entity Framework学习笔记——配置EF

    初次使用Entity Framework(以下简称EF),为了避免很快忘记,决定开日志记录学习过程和遇到的问题.因为项目比较小,只会用到EF的一些基本功能,因此先在此处制定一个学习目标:1. 配置EF ...

  3. Entity Framework 实体框架的形成之旅--实体框架的开发的几个经验总结

    在前阵子,我对实体框架进行了一定的研究,然后把整个学习的过程开了一个系列,以逐步深入的方式解读实体框架的相关技术,期间每每碰到一些新的问题需要潜入研究.本文继续前面的主题介绍,着重从整体性的来总结一下 ...

  4. 学习Entity Framework 中的Code First

    这是上周就写好的文章,是在公司浩哥的建议下写的,本来是部门里面分享求创新用的,这里贴出来分享给大家. 最近在对MVC的学习过程中,接触到了Code First这种新的设计模式,感觉很新颖,并且也体验到 ...

  5. 转载:学习Entity Framework 中的Code First

    看完觉得不错,适合作为学习资料,就转载过来了 原文链接:http://www.cnblogs.com/Wayou/archive/2012/09/20/EF_CodeFirst.html 这是上周就写 ...

  6. Entity Framework 5问题集锦

    ORM框架万万千,一直都使用NHibernate,没用过其他的.最近闲来学习下微软自家的Entity Framework,记录一些我学习过程中遇到的头疼问题.(不断更新中...) 教程:http:// ...

  7. .net core引用错误的Entity Framework而导致不能正常迁移数据的解决办法

    本人刚学.net core,因此在学习过程中会遇上许许多多的坑.每一位初学者最大的问题在于资料的查看不仔细或是没有正确理解里面的内容,导致在后面自己在不知道错误的情况下做了一个小动作.对于完全没有理解 ...

  8. 使用ASP.NET MVC+Entity Framework快速搭建系统

    详细资料: http://www.cnblogs.com/dingfangbo/p/5771741.html 学习 ASP.NET MVC 也有一段时间了,打算弄个小程序练练手,做为学习过程中的记录和 ...

  9. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

随机推荐

  1. spring boot 2.x版本:java.lang.ClassNotFoundException: org.springframework.boot.bind.RelaxedDataBinder

    标题 ##搭建spring boot 2.0.3版本 使用alibaba的druid数据库连接池,com.github.pagehelper的分页插件,启动项目报错. 错误提示:java.lang.C ...

  2. 序列变换(HDU-5256)【LIS】

    题目链接:https://vjudge.net/problem/HDU-5256 题意:给一个数列,每一个数都不相同且为整数,现求,最少需要修改多少次才能使该数列为严格上升的. 思路:首先,对于一个严 ...

  3. JVM 内存溢出详解(栈溢出,堆溢出,持久代溢出、无法创建本地线程)

    出处:  http://www.jianshu.com/p/cd705f88cf2a 1.内存溢出和内存泄漏的区别 内存溢出 (Out Of Memory):是指程序在申请内存时,没有足够的内存空间供 ...

  4. (十四)角色管理(Ztree插件的基本使用)

    1. 建表 角色表 菜单表 角色-菜单(这个表中的role_id和menuu_id都不能被设置为主键,否则当插入一个新角色的时候,一个角色可能拥有多个菜单(role_id重复),一个菜单可能被多个角色 ...

  5. ant Windows下环境变量配置 安装 编译

    下载 官网:[http://ant.apache.org/] 其他版本:[http://archive.apache.org/dist/ant/binaries/] 点击这个进入下载页面 Window ...

  6. POJ2945(Find the Clones)--字典树,map

    题意:给你n个规定长度的单词,问你其中出现了1次的单词,出现两次的单词...出现n次单词分别有多少个. 当然这题map也能过,但是这里介绍字典树的做法. 首相对于n个单词存入树中,当然建树过程中遇到一 ...

  7. 图片预加载的插件使用-jquery.imgpreload.min.js

    使用方法: //图片预加载 var the_images = [];//新建一个数组,然后将要加载的图片地址推入这个数组中: the_images.push( 'bg.jpg' ); var load ...

  8. FPGA上外挂DDR2&DDR3&MIG IP的使用记录

    前言 当需要大容量数据存储及处理的时候,FPGA内部自带的存储资源是远远不够的,所以问题来了,怎么使用外带的DDR3? 首要问题在于DDR3是什么?有没有协议?当然只是需要用Xilinx MIG IP ...

  9. maven项目下pom.xml依赖报错

    百度了好几次,说是在本地仓库下少plugin,但是找了之后,发现并没有少呀

  10. Pose Estimation

    Human Pose Estimation for Real-World Crowded Scenarios https://arxiv.org/pdf/1907.06922.pdf CrowdPos ...