博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
code First 四
阅读量:5256 次
发布时间:2019-06-14

本文共 2986 字,大约阅读时间需要 9 分钟。

先从现有数据库获取代码:  我们创建模型的时候选择Code First就可以了

public ModelStudent()            : base("name=ModelStudent")        {        }        public virtual DbSet
Courses { get; set; } public virtual DbSet
Standards { get; set; } public virtual DbSet
Students { get; set; } public virtual DbSet
StudentAddresses { get; set; } public virtual DbSet
sysdiagrams { get; set; } public virtual DbSet
Teachers { get; set; } public virtual DbSet
View_StudentCourse { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity
() .Property(e => e.CourseName) .IsUnicode(false); modelBuilder.Entity
() .HasMany(e => e.Students) .WithMany(e => e.Courses) .Map(m => m.ToTable("StudentCourse").MapLeftKey("CourseId").MapRightKey("StudentId")); modelBuilder.Entity
() .Property(e => e.StandardName) .IsUnicode(false); modelBuilder.Entity
() .Property(e => e.Description) .IsUnicode(false); modelBuilder.Entity
() .HasMany(e => e.Students) .WithOptional(e => e.Standard) .WillCascadeOnDelete(); modelBuilder.Entity
() .HasMany(e => e.Teachers) .WithOptional(e => e.Standard) .WillCascadeOnDelete(); modelBuilder.Entity
() .Property(e => e.StudentName) .IsUnicode(false); modelBuilder.Entity
() .Property(e => e.RowVersion) .IsFixedLength(); modelBuilder.Entity
() .HasOptional(e => e.StudentAddress) .WithRequired(e => e.Student) .WillCascadeOnDelete(); modelBuilder.Entity
() .Property(e => e.Address1) .IsUnicode(false); modelBuilder.Entity
() .Property(e => e.Address2) .IsUnicode(false); modelBuilder.Entity
() .Property(e => e.City) .IsUnicode(false); modelBuilder.Entity
() .Property(e => e.State) .IsUnicode(false); modelBuilder.Entity
() .Property(e => e.TeacherName) .IsUnicode(false); modelBuilder.Entity
() .HasMany(e => e.Courses) .WithOptional(e => e.Teacher) .WillCascadeOnDelete(); modelBuilder.Entity
() .Property(e => e.StudentName) .IsUnicode(false); modelBuilder.Entity
() .Property(e => e.CourseName) .IsUnicode(false); }

 

实体框架中的级联删除代码优先:

删除主体记录时,级联删除会自动删除相关记录或将空值设置为foreignkey属性。

对于所有类型的关系(如一对一,一对多和多对多),实体框架中默认启用级联删除

一对一级联删除:

   

一对多级联删除:

 

 

关闭级联删除:

   

 

 

在Code-First中移动配置以分隔类:

    Code-First使您可以将与一个域类有关的所有配置移动到一个单独的类

 

可以将与学生实体有关的所有配置移动到从中派生出的单独的类EntityTypeConfiguration<TEntity>

 

代码优先的数据库初始化策略:

有四种不同的数据库初始化策略:

  1. CreateDatabaseIfNotExists:这是默认的初始值设定项。如果每个配置都不存在,它将创建数据库。但是,如果更改模型类,然后使用此初始化程序运行应用程序,则会引发异常。
  2. DropCreateDatabaseIfModelChanges:如果您的模型类(实体类)已被更改,此初始化程序将删除现有的数据库并创建一个新的数据库。所以,当模型类更改时,您不必担心维护数据库模式。
  3. DropCreateDatabaseAlways:这个初始化器在每次运行应用程序时都会删除一个现有的数据库,而不管你的模型类是否已经改变。当你想要新的数据库,每次运行应用程序,就像在开发应用程序时一样,这将会很有用。
  4. 自定义数据库初始化程序:如果上述任何一个不满足您的要求,或者您想要使用上述初始化程序来初始化数据库,您也可以创建自己的自定义初始化程序。

要使用上述DB初始化策略之一,必须在Context类中使用Database类设置DB初始值设定项,如下所示:

在Code-First中关闭数据库初始化程序:

 

 

代码优先种子数据库:

 可以在数据库初始化过程中将数据插入到数据库表中。如果你想为你的应用程序提供一些测试数据或者为你的应用程序提供一些默认的主数据,这将是非常重要的。

 

 

  代码优先到这里就完了。

 

转载于:https://www.cnblogs.com/Sea1ee/p/8118956.html

你可能感兴趣的文章
plsql弹出注册框
查看>>
Marshmallow详解
查看>>
TrueCrypt
查看>>
Android Studio|IntelliJ IDEA 常用快捷键(Mac|Window)
查看>>
tbl.js div实现的表格控件,完全免费,no jquery
查看>>
WIN32得到HWND
查看>>
一段时间Mysql弹出Start Initialization installer
查看>>
《人类简史》十三、不断追寻(下)——重新认识自己
查看>>
POJ 2075
查看>>
php redis
查看>>
c# 截屏
查看>>
第二次Java作业--计科1501李俊
查看>>
转载:SQL Server编程基本语法
查看>>
[转] spring @Entity @Table
查看>>
点评字符串编码认知
查看>>
mysql存储过程详解
查看>>
初学Python写二进制文件
查看>>
JS中的window对象
查看>>
RadASM的主题更换!
查看>>
python metclass
查看>>