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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了译第4节---简单的Code First示例相关的知识,希望对你有一定的参考价值。

原文地址:http://www.entityframeworktutorial.net/code-first/simple-code-first-example.aspx

假设我们要为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示例的主要内容,如果未能解决你的问题,请参考以下文章

译第36节---基于代码迁移

译第3节--- 配置开发环境

译第17节---数据注解-Column

译第31节---数据库初始化策略

译第26节---配置一对多关系

译第7节---映射继承策略