1. 程式人生 > 實用技巧 >筆試考試系統--配置EF;執行單元測試

筆試考試系統--配置EF;執行單元測試

今天完成了ExamOnLine.Service層,EF和ExamDbContext的配置

工作量相對來說還是比較大的,

EF的配法:

首先配置Entities

每一個Entities對應資料庫中的一張表,裡面寫這些內容

 public class StudentEntities
    {
        public int Id { get; set; }
        /// <summary>
        /// 學生賬號
        /// </summary>
        public string StudentNumber { get; set; }
        
/// <summary> /// 姓名 /// </summary> public string StudentName { get; set; } /// <summary> /// 密碼 /// </summary> public string StudentPwd { get; set; } /// <summary> /// 學生性別 /// </summary> public string StudentSex { get
; set; } /// <summary> /// 主修專業 /// </summary> public string StudentMajor { get; set; } /// <summary> /// 學生所在班級 /// </summary> public string StudentClass { get; set; } /// <summary> /// 學生所在學校 /// </summary>
public string StudentShcool { get; set; } }

接下來配Config

裡面程式碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity.ModelConfiguration;
using ExamOnLine.Service.Entities;

namespace ExamOnLine.Service.Configs
{
    //和資料庫表的對應關係
    //讓程式EF自動生成資料庫表
    class StudentConfig:EntityTypeConfiguration<StudentEntities>
    {
        public StudentConfig()
        {
            ToTable("Student");
            //姓名這一列是必須的,並且最大長度是20
            Property(e => e.StudentName).IsRequired().HasMaxLength(20);

        }
    }
}

陪完這些,接下來就是ExamDbContext檔案的書寫,新增ExamDbContext

內容程式碼如下:

 public class ExamDbContext:DbContext
    {
        private static ILog log = LogManager.GetLogger(typeof(ExamDbContext));//宣告Log4NET物件,建議一個類就宣告一個ILog物件
        public ExamDbContext():base("name=connStr")
        {
            //將EF生成的SQL語句記錄在日誌裡面
            this.Database.Log = (sql) =>
            {
                log.DebugFormat("EF開始執行sql語句{0}", sql);
            };

            Database.SetInitializer<ExamDbContext>(null);//只要資料庫建造好後,就加上這句話,禁止Ef再去幫你建立資料庫的一些操作
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Configurations.AddFromAssembly(Assembly.GetExecutingAssembly());
        }

        //屬性類
        public DbSet<StudentEntities> Students { get; set; }

        public DbSet<QuestionsEntities> Questionses { get; set; }
        public DbSet<StudentAnswerEntities> StudentAnswers { get; set; }
        public DbSet<StudentExamInfoEntities> StudentExamInfoes { get; set; }
        public DbSet<StudentScoreEntities> StudentScores { get; set; }
        public DbSet<SubjectEntities> Subjects { get; set; }
        public DbSet<TeacherEntities> Teachers { get; set; }
        public DbSet<TestPaperEntities> TestPapers { get; set; }

        public DbSet<TestPaperSubjectEntities> TestPaperSubjects { get; set; }

    }

配完這些,EF的內容程式碼部分就基本上寫完了

但是後面的操作一樣很重要,

在頁面部分 Web.config檔案中新增連線字串,前後端都要加

  <!--連線字串-->
  <connectionStrings>
    <add name="connStr" connectionString="Data Source=.;Initial Catalog=HPStudentExamSystem;Integrated Security=True" providerName="System.Data.SqlClient"/>  
  </connectionStrings>

接著新增單元測試

,單元測試同意需要安裝Log4.NET和EntityFrameWork

之後執行測試即可

如果你的測試是這樣的,那就通過了

如果是這樣的

就根據錯誤資訊,查詢問題,處理後再測試即可

,我今天就是遇到了這樣的問題,原因是資料庫的主外來鍵關係沒有在表中體現,後來改了之後就好了

程式遇到問題是非常影響專案進度的,希望以後自己程式碼邏輯都可以再熟練一些吧,加油!