欢迎进入广州凡科互联网科技有限公司网站
全国服务热线
4000-399-000
EF Code
时间: 2021-03-01 17:08 浏览次数:
EF Code-First数据信息转移 配备方法及指令表明EF Code-First数据信息转移 配备方法及指令表明;Entity Framework Code First数据信息库联接;Code-First数据信息转移 应用NuGet安裝Entity Framework程序包
EF Code-First数据迁移 配置技巧及命令说明 EF Code-First数据信息转移 配备方法及指令表明

EF Code-First数据信息转移 配备方法及指令表明;Entity Framework Code First数据信息库联接;Code-First数据信息转移


应用NuGet安裝Entity Framework程序包:专用工具- 库程序检修口理器- 程序检修口理器操纵台,实行下列句子: PM Install-Package EntityFramework 2. Entity Framework数据信息库联接配备 安裝了Entity Framework以后,会全自动加上App.config 文档。该文档中配备了Entity Framework的DefaultConnectionFactory,改动数据信息库联接标识符串以后的联接实际以下:

 在开展上边的为Entity Framework设定DefaultConnectionFactory以后,应用Entity Framework联接数据信息库不需再在别的地区开展设定,Entity Framework都不必须特定数据信息库联接。
 Entity Framework联接数据信息库除开之上的方法,还可以根据配备常见的connectionStrings,改动App.config以下:
 
providerName="System.Data.SqlClient" /
3. Entity Framework DbContext联接数据信息库
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Entity;
namespace Portal
 public class PortalContext : DbContext
 static PortalContext()
 Database.SetInitializer(null);
 //Database.SetInitializer(new CreateDatabaseIfNotExists());
 //Database.SetInitializer(new DropCreateDatabaseAlways());
 //Database.SetInitializer(new DropCreateDatabaseIfModelChanges());
 public PortalContext()
 : base("name=PortalContext")
 protected override void OnModelCreating(DbModelBuilder modelBuilder)
}
在PortalContext.cs中,应用了类的静态数据结构涵数及结构涵数。在其中,在静态数据结构涵数中设定数据信息库的原始化方法,在结构涵数中特定App.config的connectionString。 3.1 Entity Framework数据信息库原始化方法 Entity Framework根据Database.SetInitializer来特定必须的数据信息库原始化方法,Database.SetInitializer可特定的数据信息库现有3种: 1 . CreateDatabaseIfNotExists CreateDatabaseIfNotExists是Database.SetInitializer特定数据信息库的默认设置方法,用以当数据信息库不会有时,全自动建立数据信息库。因为该方法是默认设置方法,因此能够不用一切编码开展特定,自然还可以应用编码来确立的特定。 Database.SetInitializer(new CreateDatabaseIfNotExists()); 2 . DropCreateDatabaseWhenModelChanges DropCreateDatabaseWhenModelChanges用以当数据信息实体模型产生更改时,先删掉原数据信息库,后建立新的数据信息库。 Database.SetInitializer(new DropCreateDatabaseIfModelChanges()); 3 . DropCreateDatabaseAlways DropCreateDatabaseAlways用以每一次均先删掉原数据信息库创下新建的数据信息库,无论数据信息实体模型是不是产生更改。 Database.SetInitializer(new DropCreateDatabaseAlways()); 可是,在许多情况下,大家期待即便在Entity Framework Code First与数据信息库不配对时,宁愿Entity Framework Code First给出数据信息库联接不正确,而不期待多数据库开展一切的删掉建立实际操作。Entity Framework Code First出示关掉数据信息库原始化实际操作: Database.SetInitializer(null); 3.2 Entity Framework Code First联接数据信息库的一些设定 在具体应用Entity Framework Code First来实际操作数据信息库时,一般会在承继DbContext的类中作一些Entity Framework Code First的数据信息库实际操作设定。 1 . 禁止使用延迟时间载入(Lazy Loading) 在存有引入关联的2个实体线类中,一个类的案例能够根据关系关联获得与之相匹配的此外一个类的一个或好几个案例。在这里种获得的情况下,Entity Framework Code First出示了默认设置的延迟时间载入作用。一个类的案例,在必须应用此外一个类相匹配的案例时,能够立即载入在类中界定的关系特性,Entity Framework将全自动到数据信息库文件去载入回到必须的纪录。自然它是延迟时间载入的益处,一样延迟时间载入也存有一些不太好的地区。在Entity Framework根据延迟时间载入去载入关系纪录时,将会实行过量的SQL句子,与具体所料想的不一致,进而危害编码的实行高效率。 设定默认设置禁止使用延迟时间载入,在必须Entity Framework载入关系数据信息纪录时选用显示信息载入。
public PortalContext()
 : base("name=PortalContext")
 // 禁止使用延迟时间载入
 this.Configuration.LazyLoadingEnabled = false;
}
2 . 禁止使用关联数据信息的联级删掉 在存有关系关联的数据信息纪录间,当主表纪录删掉除时,全自动删掉从表格中关系的纪录。这一是关联数据信息库文件大多数存有的作用,包含MS SQL Server一样也出示了该作用。但是在具体的新项目中,通常不愿应用这类联级删掉作用,在必须删掉关系的纪录时,也一样撰写编码来开展删掉。 Entity Framework Code First设定默认设置禁止使用关系数据信息的联级删掉作用:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
 // 禁止使用一对多级别联删掉
 modelBuilder.Conventions.Remove();
 // 禁止使用多对多级别联删掉
 modelBuilder.Conventions.Remove();
}
3 . 禁止使用默认设置表名复数方式
Entity Framework Code First在依据类名来转化成数据信息表时,转化成的数据信息表表名会是类名的复数方式。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
 // 禁止使用默认设置表名复数方式
 modelBuilder.Conventions.Remove();
PortalContext.cs的详细编码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
namespace Portal
 public class PortalContext : DbContext
 static PortalContext()
 Database.SetInitializer(null);
 public PortalContext()
 : base("name=PortalContext")
 // 禁止使用延迟时间载入
 this.Configuration.LazyLoadingEnabled = false;
 protected override void OnModelCreating(DbModelBuilder modelBuilder)
 // 禁止使用默认设置表名复数方式
 modelBuilder.Conventions.Remove();
 // 禁止使用一对多级别联删掉
 modelBuilder.Conventions.Remove();
 // 禁止使用多对多级别联删掉
 modelBuilder.Conventions.Remove();
}
4、Code-First数据信息转移
起动数据信息转移 开启程序检修口理器操纵台,键入Enable-Migrations命令,以MvcMigrationDemoContext为例子,键入以下: Enable-Migrations -ContextTypeName MvcMigrationDemo.Models.MvcMigrationDemoContext VS 会建立一个Migrations文件目录,包括2个文本文档**********_InitialCreate和Configuration。 你能发觉**********_InitialCreate恰好和[dbo].[__MigrationHistory].MigrationId一致,文本文档纪录了建立此次数据信息实体模型的详细叙述。 Configuration界定了数据信息库转移该有的个人行为。 4.1、运作数据信息库转移
在PM中,键入Add-Migration命令,务必携带一个版本号名字。 开展转移姿势 在PM中键入Update-Database命令 到此,数据信息转移进行。 附1:可根据Update-Database命令全自动转化成数据信息库转移的T-SQL脚本制作,此次实际操作以下:Update-Database -SourceMigration *********_InitialCreate -TargetMigration **********_AddAbout -Script 附2:复原数据信息库  此次实际操作以下:Update-Database -TargetMigration **********_InitialCreate


Copyright © 广州凡科互联网科技有限公司 版权所有 粤ICP备10235580号
全国服务电话:4000-399-000   传真:021-45545458
公司地址:广州市海珠区工业大道北67号凤凰创意园