- 設置主鍵
modelBuilder.Entity<x>().HasKey(t => t.Name);
- 設置聯合主鍵
modelBuilder.Entity<x>().HasKey(t =>new{t.Name,t.ID} );
- 取消數據庫字段標識(取消自動增加)
modelBuilder.Entity<x>().Property(t=>t.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
- 設置數據庫字段標識(自動增加)
modelBuilder.Entity<Teacher>().Property(t =>t.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
- 設置字段最大長度
modelBuilder.Entity<ClassA>().Property(t => t.Name).HasMaxLength(100);
- 設置字段爲必需
modelBuilder.Entity<ClassA>().Property(t =>t.Id).IsRequired();
- 屬性不映射到數據庫
modelBuilder.Entity<ClassA>().Ignore(t => t.A);
- 將屬性指定數據庫列名:
modelBuilder.Entity<ClassA>() .Property(t => t.A) .HasColumnName("A_a");
- 級聯刪除(數據庫默認是不級聯刪除的)
modelBuilder.Entity<Course>().HasRequired(t => t.Department).WithMany(t => t.Courses).HasForeignKey(d => d.DepartmentID).WillCascadeOnDelete();
- 設置爲Timestamp
modelBuilder.Entity<OfficeAssignment>() .Property(t => t.Timestamp) .IsRowVersion();
- 表1對0..1(Instructor實體能夠包含零個或一個OfficeAssignment)
modelBuilder.Entity<OfficeAssignment>().HasRequired(t => t.Instructor).WithOptional(t => t.OfficeAssignment);
- 表1對1
modelBuilder.Entity<Instructor>().HasRequired(t => t.OfficeAssignment).WithRequiredPrincipal(t => t.Instructor);
- 表1對n(Department爲主表)
modelBuilder.Entity<Staff>() .HasRequired(c => c.Department) .WithMany(t => t.Staffs)
- 指定外鍵名(指定表Staff中的字段DepartmentID爲外鍵)
modelBuilder.Entity<Staff>() .HasRequired(c => c.Department) .WithMany(t => t.Staffs) .Map(m => m.MapKey("DepartmentID"));
- 表n對n
modelBuilder.Entity<Course>()
.HasMany(t => t.Instructors)
.WithMany(t => t.Courses)
- 表n對n指定鏈接表名及列名
modelBuilder.Entity<Course>()
.HasMany(t => t.Instructors)
.WithMany(t => t.Courses)
.Map(m =>
{
m.ToTable("CourseInstructor");
m.MapLeftKey("CourseID");
m.MapRightKey("InstructorID");
});
轉自:https://www.cnblogs.com/wangshaod/p/10025836.html