【轉】FluentAPI詳細用法

  • 設置主鍵
    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
相關文章
相關標籤/搜索