实体框架ADO.NET Entity Framework(EF)一套支持面向数据的软件应用程序开发的技术,它可让开发人员使用映射到数据源中的逻辑架构的概念模型。

一.搭建EF框架

1.BLL(业务层)、2.DAL(数据层)、3.Model(实体层)

在解决方案上操作右键,选择【添加项目】,把3个项目都添加进去

(1)3层间得引用关系如下:

a. DAL 引用 Model

b.BLL 引用 DAL 和 Model

c.创建的 ASP.NET MVC 项目引用 BLL 和 Model

(2)引用方法:在对应的项目上操作右键,选择【引用】(也可直接在项目中的“引用”上操作右键)

2.下载EF插件

点击管理NuGet程序包,

下载成功之后连接数据库

3.添加实体数据模型,

使用EF进行数据库开发的时候有两个步骤需要创建:一个是数据库,另一个是模型类。根据这两种创建的先后顺序有EF的三种创建办法:

a).DataBase First(数据库优先):先创建数据库表,然后自动生成EDM文件,EDM文件生成模型类。

b).Model First(模型优先):先创建Edm文件,Edm文件自动生成模型类和数据库

c).Code First(代码优先):自己写模型类,然后自动生成数据库。没有Edm文件。
DataBase First简单、方便,但是当项目打了之后会非常痛苦;Code First入门门槛高,但是适合大项目。虽然有三种创建方法,一旦创建好了数据库、模型类之后,后面的用法都是一样的。业界推荐使用Code First,新版的EF中只支持Code irst,所以在以后的使用中,就按照Code First的方法创建使用EF。

使用DataBase First(数据库优先)连接也行,这里使用Code First(代码优先)框架,这个不需要自己写数据库

(1)在已经配置好EF框架的前提下使用,操作如下,这里建议看(2)的操作,本(1)的操作只是基本的了解。

点击添加,下一步

点击空的EF模型,然后点击完成,下一步

然后在Model中配置数据库, dessed就是一个表,但是它写入数据库后会在结尾加s或者es。

然后App.config中需要配置读取数据库的data source=localhost等等,然后就是添加数据库保存。

(2)添加基于数据库创建的Code First模型(本项目主要还是用的这个)

点击下一步 ,继续

点击下一步,继续

勾选表和确认单复数,点击完成。

在此处会自动导入之前已经建立好的表关系,并且会自动在Model类中,自动建立好表之间的关系,

下面再说一下,

二.使用基于数据库的Code First模型的EF框架需要了解和注意的相关问题。

1.立即加载,延迟加载,显式加载
(1)立即加载:
有什么好处:如果一次性加载出来,可以后续从cache中读取。。。或者减少数据库的访问次数。。。
(2)延迟加载:增加了数据库的压力,,,只有你需要这条数据的时候我们才加载,如果数据量比较大。。。
    Tree结构,树形菜单。
    默认情况下我们就是延迟加载。。。如何关闭延迟加载??显示加载?
上面这个简单了解一下,看看与后面的Tree结构,树形菜单,树形结构有没有关系,需不需要更改,正常情况下是不需要。
2.数据库给我们提供了哪些策略
(1)CreateDatabaseIfnotExists。。。【默认的数据库策略】
       a.数据库不存在,创建数据库。。
       b.model修改,执行抛出异常
(2)DropCreateDatabaseIfModelChanges【model一旦修改,我们将会执行dropdatabase操作】
     缺点:一旦有原始数据,那么对不起,数据都没有了。
(3)DropCreateDatabaseAlways    一直都是rebuild操作。。。

3.migration【数据迁移】=>解决了数据丢失的问题。

migration_history...
(1)在nuget控制台上键入:enable-migrations -EnableAutomaticMigration:$true  来增加一个confiration的一个配置文件

输入命令之后,会出现Migrations的文件夹

Configuration中第二行=true,就是默认删除表的某一构造造成的数据丢失,这一操作,允许执行

(2)在dbcontext构造函数中注入“数据库初始化方式”
  //Database.SetInitializer(new MigrateDatabaseToLatestVersion<Model1, Migrations.Configuration>("Model1"));
(3)改一下db的名字,因为第一次使用codefirst的话,我们并没有db存在。(就是在App.config中改变数据库的名字,重新命名一个数据库)
(4)执行savechange操作
 4.如何做到修改domain不做dropdatabase的操作
  (1).add column的操作

理想情况下,表中的记录还在,同时表中会增加一个新的column
2. remove column操作             SchoolDB2数据库
    会存在一个数据的那要删除的一列丢失的问题。。
    默认情况下,这种危险的操作ef是否默认放行呢???
    ef必须让我们显示指定,否则不给放行。。。

下面这个截图是单独的补充之前的,可以看看,学习视频,推荐:https://www.bilibili.com/video/BV187411m7DD

 public class Model1 : DbContext{//您的上下文已配置为从您的应用程序的配置文件(App.config 或 Web.config)//使用“Model1”连接字符串。默认情况下,此连接字符串针对您的 LocalDb 实例上的//“DAL.Model1”数据库。//如果您想要针对其他数据库和/或数据库提供程序,请在应用程序配置文件中修改“Model1”//连接字符串。public Model1(): base("name=Model1")   //("data source=localhost;initial catalog=ceshi;integrated security=True")  {//model一旦修改,db进行rebuild//Database.SetInitializer<Model1>(new DropCreateDatabaseIfModelChanges<Model1>());//Database.SetInitializer(new MigrateDatabaseToLatestVersion<Model1, Migrations.Configuration>("Model1"));}protected override void OnModelCreating(DbModelBuilder modelBuilder){modelBuilder.Entity<Student>()//.ToTable("sss")   修改表名.Property(e => e.StudentName)   //选择表中的某一个字段变量,进行配置.IsUnicode(false)               //指定该字段不支持Unicode字符串的内容;base.OnModelCreating(modelBuilder);}//为您要在模型中包含的每种实体类型都添加 DbSet。有关配置和使用 Code First  模型//的详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=390109。public virtual DbSet<dessed> de { get; set; }   public virtual DbSet<aoe> ddd { get; set; }public virtual DbSet<Student>Students { get; set; }public virtual DbSet<StudentAddress> StudentAddresses { get; set; }}

之后的操作请看基于EF框架的数据库操作方法。

Visual Studio中使用EF框架的过程相关推荐

  1. 在Visual Studio中启用对jquery等javascript框架的智能感知

    http://www.cnblogs.com/tonybinlj/archive/2009/05/26/1490434.html 启用Visual Studio 对jQuery的智能感知 首先看一下V ...

  2. 如何:在 Visual Studio 中添加或移除引用(转载)

    http://msdn2.microsoft.com/zh-cn/library/wkze6zky(VS.80).aspx Visual Studio 如何:在 Visual Studio 中添加或移 ...

  3. 在Visual Studio中调试samples中可能出现的错误

    在Visual Studio中调试samples中可能出现的错误 进入samples/opencl文件夹下,打开OpenCLSamples.sln,然后选择" 生成 -> 重新生成解决 ...

  4. Qt中的ui文件是c语言文件吗,c-Qt-UI文件未在Visual Studio中更新

    我最近开始使用Qt(某种速成课程)并将其与Visual Studio集成(如here所述),现在由于某种原因,在进行了以下更改后,文件似乎没有使用保存的.ui文件进行更新. Qt设计器. 该文件正在正 ...

  5. 详解在Visual Studio中使用git版本系统 [转]

    详解在Visual Studio中使用git版本系统    作者:掷鸡蛋者 , 发布于2012-6-21   这篇教程的预期,是希望没有任何版本使用基础的新手也可以掌握,所以细节较多,不当之处,欢迎指 ...

  6. Visual Studio中的第一个Django-Python应用程序

    目录 介绍 创建一个项目 添加虚拟环境 结论 介绍 Python是一种非常强大且流行的编程语言,用于机器学习.人工智能.数据科学. 但是,如果您正在考虑使用此python创建一个Web应用程序,它可以 ...

  7. visual studio编译linux,在 Visual Studio 中配置 Linux MSBuild C++ 项目

    在 Visual Studio 中配置 Linux MSBuild C++ 项目Configure a Linux MSBuild C++ project in Visual Studio 10/16 ...

  8. 转到Visual Studio中的匹配括号吗?

    在Visual Studio 2008中,有没有一种方法可以从右括号到右括号? 我发现有很多关于突出显示括号的内容,但是没有关于将光标移动到括号的内容. (此问题的VB.NET版本: 在" ...

  9. 关于Visual Studio 中“scanf”输入报错的解决方法

    有很多初次接触VS的同学会发现,当我们在写完一段代码,代码中用到scanf输入变量时,在调试编译的过程中就会出现错误: warning C4996: 'scanf': "This funct ...

最新文章

  1. javascript --- event loop
  2. 解决mapgis比例尺不正确问题
  3. python-基础回顾
  4. wireshark linux远程,如何在SSH连接Linux的环境下使用wireshark抓包云边端架构?
  5. java原子性是什么_中级Java应该清楚的概念:原子性、可见性、有序性是什么?...
  6. 云资源中的低成本战斗机——竞价实例,AWS、阿里云等六家云厂商完全用户使用指南
  7. 前端开发学习路线图,完整学习教程+工具+框架
  8. 2019 开源安全报告:开发者安全技能短板明显,热门项目成漏洞重灾区!
  9. word交叉引用自动编排word参考文献
  10. linux如何打出罗马数字,ps罗马数字怎么打
  11. 1041 例题4-2 比较交换实数值
  12. 代码笔记源码php,读 PHP - Pimple 源码笔记(上)
  13. 全球与中国多模连续光纤激光器市场现状及未来发展趋势
  14. 9.22 英语单词回顾
  15. html选择按键点击后锁死输入框_js Dom为页面中的元素绑定键盘或鼠标事件
  16. 通达信地量指标公式 启涨地量买点选股指标天眼地量指标
  17. unity 眼球效果 eyes shader
  18. 我是怎么找到电子书的
  19. 中国化合物半导体产业竞争趋势与投资前景建议报告2022-2028年版
  20. 驱动认知 驱动的编写

热门文章

  1. 数据结构 习题 综合复习
  2. 2022年全国大学生数学建模竞赛A题思路
  3. 计算机图形学05:中点BH算法对任意斜率的直线扫描转换方法
  4. java程序设计基础笔试题库,智慧职教Java程序设计基础题库及答案
  5. 使用GNS3架设PPPOE服务器巧妙获取路由器ADSL密码
  6. 计算机网络:IP数据报文分析
  7. 惠普linux进入bios设置u盘启动,惠普bios,小编教你惠普bios怎么设置u盘启动
  8. 计算机组成原理复试面试高频问题,研究生复试面试高频问题及回答技巧汇总
  9. dns服务期搭建使用_DNS服务器的搭建与使用详解
  10. 邯郸学院计算机怎样百度,邯郸学院怎么样?为你深度解读邯郸学院。