zoukankan      html  css  js  c++  java
  • 【译】第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约定。

      

  • 相关阅读:
    053(九)
    方法的重载
    方法的重写(override / overwrite)
    属性与局部变量的对比
    面向对象基础知识合集:对象的产生、对象的生命周期、内存解析
    使用二维数组打印一个 10 行杨辉三角
    数组中的常见异常: 1. 数组角标越界的异常:ArrayIndexOutOfBoundsExcetion 2. 空指针异常:NullPointerException
    快速排序
    * 数组的冒泡排序的实现
    * 二维数组的使用
  • 原文地址:https://www.cnblogs.com/talentzemin/p/6675579.html
Copyright © 2011-2022 走看看