در این آموزش به نحوه ایجاد کلاسهای context و entity برای دیتابیس موجود در Entity Framework Core خواهیم پرداخت.
نکته ای که باید به عرض برسانیم این است که EF Core از دیزاینر و مراحل بصورت wizard جهت ایجاد مدلهای یک دیتابیس موجود پشتیبانی نمی کند لذا برای اینجام این کار از فرامین Scaffold-DbContext استفاده میکنیم.
قالب کلی دستور بصورت زیر می باشد.
عبارت OutputDir محل دخیره سازی مدلهای برنامه را مشخص می کنئ که در این قسمت پوشه Models انتخاب شده است.
در پایان شما می توانید کلاسهای ایجاد شده را درون پوشه Models مشاهده نمایید.
کلاس context ایجاد شده را مشاهده نمایید.
public partial class azmoondbContext : DbContext
{
public azmoondbContext()
{
}
public azmoondbContext(DbContextOptions<azmoondbContext> options)
: base(options)
{
}
public virtual DbSet<GroupUsers> GroupUsers { get; set; }
public virtual DbSet<Lessons> Lessons { get; set; }
public virtual DbSet<Quiz> Quiz { get; set; }
public virtual DbSet<QuizDetails> QuizDetails { get; set; }
public virtual DbSet<QuizMaster> QuizMaster { get; set; }
public virtual DbSet<QuizStudentInfo> QuizStudentInfo { get; set; }
public virtual DbSet<Roles> Roles { get; set; }
public virtual DbSet<Student> Student { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. See http://go.microsoft.com/fwlink/?LinkId=723263 for guidance on storing connection strings.
optionsBuilder.UseSqlServer("Server=.;Database=azmoondb;Trusted_Connection=True;");
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<GroupUsers>(entity =>
{
entity.Property(e => e.Id).HasColumnName("ID");
entity.Property(e => e.Description)
.HasMaxLength(1000)
.HasDefaultValueSql("('')");
entity.Property(e => e.GroupDate)
.IsRequired()
.HasMaxLength(20);
entity.Property(e => e.GroupName)
.IsRequired()
.HasMaxLength(500);
entity.Property(e => e.IsActive)
.IsRequired()
.HasDefaultValueSql("((1))");
});
modelBuilder.Entity<Lessons>(entity =>
{
entity.Property(e => e.Id).HasColumnName("ID");
entity.Property(e => e.NameLesson).HasMaxLength(100);
entity.Property(e => e.ParentId)
.HasColumnName("ParentID")
.HasDefaultValueSql("((0))");
});
modelBuilder.Entity<Quiz>(entity =>
{
entity.ToTable("quiz");
entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.Ans)
.HasColumnName("ans")
.HasMaxLength(20);
entity.Property(e => e.Item1)
.HasColumnName("item1")
.HasMaxLength(2000);
entity.Property(e => e.Item2)
.HasColumnName("item2")
.HasMaxLength(2000);
entity.Property(e => e.Item3)
.HasColumnName("item3")
.HasMaxLength(2000);
entity.Property(e => e.Item4)
.HasColumnName("item4")
.HasMaxLength(2000);
entity.Property(e => e.LessonId).HasColumnName("lessonID");
entity.Property(e => e.QuizName)
.HasColumnName("quizName")
.HasMaxLength(2000);
entity.Property(e => e.Sakhti).HasColumnName("sakhti");
entity.HasOne(d => d.Lesson)
.WithMany(p => p.Quiz)
.HasForeignKey(d => d.LessonId)
.HasConstraintName("FK_quiz_Lessons");
});
modelBuilder.Entity<QuizDetails>(entity =>
{
entity.Property(e => e.Id).HasColumnName("ID");
entity.Property(e => e.QuizId).HasColumnName("QuizID");
entity.Property(e => e.QuizMasterId)
.HasColumnName("QuizMasterID")
.HasMaxLength(50);
entity.HasOne(d => d.Quiz)
.WithMany(p => p.QuizDetails)
.HasForeignKey(d => d.QuizId)
.HasConstraintName("FK_QuizDetails_quiz");
entity.HasOne(d => d.QuizMaster)
.WithMany(p => p.QuizDetails)
.HasForeignKey(d => d.QuizMasterId)
.HasConstraintName("FK_QuizDetails_QuizMaster");
});
modelBuilder.Entity<QuizMaster>(entity =>
{
entity.Property(e => e.Id)
.HasColumnName("ID")
.HasMaxLength(50)
.ValueGeneratedNever();
entity.Property(e => e.DateQuiz).HasColumnType("datetime");
entity.Property(e => e.DateQuizP).HasMaxLength(20);
entity.Property(e => e.LessonsId)
.HasColumnName("LessonsID")
.HasMaxLength(200);
entity.Property(e => e.LevelQuiz).HasMaxLength(100);
entity.Property(e => e.NumberQuiz).HasDefaultValueSql("((1))");
entity.Property(e => e.Title).HasMaxLength(500);
entity.Property(e => e.UserId).HasColumnName("UserID");
});
modelBuilder.Entity<QuizStudentInfo>(entity =>
{
entity.Property(e => e.Id).HasColumnName("ID");
entity.Property(e => e.DateQuizP2)
.HasMaxLength(20)
.HasDefaultValueSql("('')");
entity.Property(e => e.LessonsIdincorrect).HasColumnName("LessonsIDIncorrect");
entity.Property(e => e.QuizMasterId)
.HasColumnName("quizMasterID")
.HasMaxLength(50);
entity.Property(e => e.UserId).HasColumnName("userID");
entity.HasOne(d => d.QuizMaster)
.WithMany(p => p.QuizStudentInfo)
.HasForeignKey(d => d.QuizMasterId)
.HasConstraintName("FK_QuizStudentInfo_QuizMaster");
entity.HasOne(d => d.User)
.WithMany(p => p.QuizStudentInfo)
.HasForeignKey(d => d.UserId)
.HasConstraintName("FK_QuizStudentInfo_student");
});
modelBuilder.Entity<Roles>(entity =>
{
entity.Property(e => e.Id)
.HasColumnName("ID")
.ValueGeneratedNever();
entity.Property(e => e.RoleDisplayName).HasMaxLength(50);
entity.Property(e => e.Rolename).HasMaxLength(50);
});
modelBuilder.Entity<Student>(entity =>
{
entity.ToTable("student");
entity.HasIndex(e => e.StuCode)
.HasName("IX_student")
.IsUnique();
entity.Property(e => e.Id).HasColumnName("ID");
entity.Property(e => e.Birthday).HasMaxLength(20);
entity.Property(e => e.Fname).HasMaxLength(50);
entity.Property(e => e.Lname).HasMaxLength(50);
entity.Property(e => e.Password)
.HasColumnName("password")
.HasMaxLength(20);
entity.Property(e => e.Phone)
.HasColumnName("phone")
.HasMaxLength(20);
entity.Property(e => e.RoleId).HasColumnName("RoleID");
entity.Property(e => e.StuCode)
.HasColumnName("stuCode")
.HasMaxLength(20);
entity.Property(e => e.Username)
.HasColumnName("username")
.HasMaxLength(20);
entity.HasOne(d => d.GroupUserNavigation)
.WithMany(p => p.Student)
.HasForeignKey(d => d.GroupUser)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_student_GroupUsers");
entity.HasOne(d => d.Role)
.WithMany(p => p.Student)
.HasForeignKey(d => d.RoleId)
.HasConstraintName("FK_student_Roles");
});
}
}