首页 > 代码库 > 【译】第4节---简单的Code First示例

【译】第4节---简单的Code First示例

假设我们要为XYZ学校创建一个简单的应用程序。 该学校的应用程序的用户应该能够添加或更新学生,标准(年级),教师和课程信息。
首先,我们开始为我们的学校领域创建类,而不是设计数据库表。 首先,我们将创建两个简单的学生和标准类,其中每个学生都与一个标准相关联,如下所示。

public class Student
{
    public Student()
    { 
        
    }
    public int StudentID { get; set; }
    public string StudentName { get; set; }
    public DateTime? DateOfBirth { get; set; }
    public byte[]  Photo { get; set; }
    public decimal Height { get; set; }
    public float Weight { get; set; }
        
    public Standard Standard { get; set; }
}
   

标准(年级)类应该能够容纳多个学生,如下所示。

public class Standard
{
    public Standard()
    { 
        
    }
    public int StandardId { get; set; }
    public string StandardName { get; set; }
    public ICollection<Student> Students { get; set; }
}

现在,我们完成了学校应用程序的初始领域类。

Code-First方法还需要从DbContext派生的上下文类。

创建一个如下所示的上下文类,它从DBContext类派生,并为你要作为模型一部分的类型公开DbSet属性,比如学生和标准类。

DbSet是实体类(又称实体集)的集合,所以我们给出了属性名称作为学生和标准的实体名称的复数。

namespace EF_Code_First_Tutorials
{ 
    public class SchoolContext: DbContext 
    {
        public SchoolContext(): base()
        {
            
        }
            
        public DbSet<Student> Students { get; set; }
        public DbSet<Standard> Standards { get; set; }
            
    }
}

现在,我们完成了Code First方法所需的类。 我们现在将使用上下文类添加学生,如下所示。

class Program
{
    static void Main(string[] args)
    {
     
        using (var ctx = new SchoolContext())
        {
            Student stud = new Student() { StudentName = "New Student" };
        
            ctx.Students.Add(stud);
            ctx.SaveChanges();                
        }
    }
}

如果您运行应用程序,您将惊奇地看到应用程序运行成功,并且一个学生已成功插入到数据库中。

但是,数据库在哪里,什么是表及其列?

这是Code First的诱人之处。 它基于在上下文类的基础构造函数中传递的参数来创建数据库。 由于我们没有在上下文类的构造函数中传递任何参数,所以在本地的SQLEXPRESS数据库中创建了“EF_Code_First_Tutorials.SchoolContext”数据库,如下所示。 它还在此数据库中创建了两个表,即基于上面定义的学生和标准领域类的学生和标准表。

技术分享

如上图所示,它创建了学生和标准表,每个表包含具有适当数据类型和长度的列。 列名称和数据类型与各个域类的属性相匹配。 它还将StudentId和StandardId作为PK(主键)和Standard_StandardId列作为FK(外键)。

这样,首先不创建数据库,就可以开始编写一个应用程序,最终将从您的领域类创建数据库。

你一定想知道如何使用PK&FK创建具有适当数据类型和长度的列,对吧? 答案是使用Code First约定。

在下一篇中学习Code First约定。

  

【译】第4节---简单的Code First示例