首页 > 编程知识 正文

ef框架是什么,visual studio框架

时间:2023-05-03 22:11:34 阅读:38439 作者:488

物理框架ado.netentityframework(ef )一组技术,支持面向数据的软件APP应用程序开发。 允许开发人员使用映射到数据源的逻辑架构的概念模型。

另一方面,右键单击要构建EF框架的1.BLL (业务层)、2.DAL (模型)、物理层)解决方案,选择【添加项目】,添加所有三个项目

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

a.DAL参照模型

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 (数据库优先)进行连接。 这里是代码优先)代码优先)框架。 这不需要自己写数据库

)1)在已配置EF框架的前提下使用,操作如下。 在此,建议查看)的操作。 本)的操作只是基本的理解。

单击“添加”,然后继续

单击空的EF模型,然后单击“完成”进入下一步

然后用Model配置数据库。 dessed是一个表,但写入数据库后,最后添加s或es。

然后,需要在App.config中配置用于读取数据库的data source=localhost等,并添加和保存数据库。

)2)添加基于数据库创建的Code First模型(本项目主要使用此模型)。

单击“下一步”继续

单击“下一步”继续

选中表,确认单个或多个,然后单击“完成”。

在此过程中,会自动导入以前创建的表关系,并在Model类中自动创建表之间的关系。

再说一遍,

2 .使用基于数据库的Code First模型的EF框架存在需要理解和注意的问题。 1 .即时加载、延迟加载、显式加载

(1)立即加载:

有什么好处:如果一次加载,以后可以从cache读取。 或减少对数据库的访问次数。

)2)延迟加载)增加了数据库压力,只在你需要此数据时加载。 数据量大的情况。

树结构,树菜单。

默认情况下,推迟加载。 如何关闭延迟加载? 显示加载?

很容易理解这一点,是否与以后的树结构、树菜单、树结构有关,是否需要更改,通常不需要。

2 .数据库为我们提供的战略

(1) CreateDatabaseIfnotExists 。 【默认数据库策略】

a .数据库不存在。 创建数据库。

b.model修正,执行慢速异常

)2) dropcreatedatabaseifmodelchanges【修改模型后执行drop数据库操作】

缺点:如果有原始数据,很抱歉,数据会消失。

(3) DropCreateDatabaseAlways一直是重建操作。

3 .迁移【数据迁移】=解决了数据丢失问题。 迁移_历史.

(1)在nuget控制台中,输入(enable-migrations-enableautomaticmigration:$ true )将配置文件添加到confiration

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

Configuration中的第二行=true是由于具有默认删除表的结构而导致的数据丢失,可以执行此操作

)2)在dbcontext构造函数中注入“数据库初始化方法”

//Database.SetIn

itializer(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框架的数据库操作方法。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。