筆試考試系統--配置EF;執行單元測試
阿新 • • 發佈:2020-07-17
今天完成了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
之後執行測試即可
如果你的測試是這樣的,那就通過了
如果是這樣的
就根據錯誤資訊,查詢問題,處理後再測試即可
,我今天就是遇到了這樣的問題,原因是資料庫的主外來鍵關係沒有在表中體現,後來改了之後就好了
程式遇到問題是非常影響專案進度的,希望以後自己程式碼邏輯都可以再熟練一些吧,加油!