【译】第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约定。

  

时间: 2024-08-08 05:19:45

【译】第4节---简单的Code First示例的相关文章

Playmaker全面实践教程之简单的使用Playmaker示例

Playmaker全面实践教程之简单的使用Playmaker示例 简单的使用Playmaker示例 通过本章前面部分的学习,相信读者已经对Playmaker有了一个整体的认识和印象了.在本章的最后,我们将以一个使用了Playmaker插件的简单示例作为结尾.一方面可以让读者了解Playmaker的使用流程,另一方面还可以让读者体会一下不使用Playmaker插件并实现同样效果的编写脚本代码的方法. Playmaker示例效果说明 游戏的场景中只有两个可见的游戏对象,它们分别是Cube和Spher

爬虫技术(四)-- 简单爬虫抓取示例(附c#代码)

这是我的第一个爬虫代码...算是一份测试版的代码.大牛大神别喷... 通过给定一个初始的地址startPiont然后对网页进行捕捉,然后通过正则表达式对网址进行匹配. List<string> todo :进行抓取的网址的集合 List<string> visited :已经访问过的网址的集合 下面实现的是,给定一个初始地址,然后进行爬虫,输出正在访问的网址和已经访问的网页的个数. 需要注意的是,下面代码实现的链接匹配页面的内容如图一.图二所示: 图一: 图二: 简单代码示范如下:

jQuery简单的Ajax调用示例

jQuery简单的Ajax调用示例 jQuery确实方便,下面做个简单的Ajax调用: 建立一个简单的html文件: <!DOCTYPE HTML> <html> <head> <script type="text/javascript" src="Public/js/jquery-easyui-1.3.1/jquery-1.8.2.min.js"></script> <script type=&qu

简单的Spring Batch示例

使用Spring Batch做为批处理框架,可以完成常规的数据量不是特别大的离线计算. 现在写一个简单的入门版示例. 这里默认大家已经掌握了Spring Batch的基本知识,示例只是为了快速上手实践 目标1:程序随机生成字符串,经过Spring Batch后,统一在字符串后加入"----PROCESSED",并输出 目标2:程序读取txt文件,经过Spring Batch后,统一加入如上字段,并输出 Spring Batch的流程 读取数据----itemReader 处理数据---

【译】第2节--- 什么是Code First?

原文链接:http://www.entityframeworktutorial.net/code-first/what-is-code-first.aspx EF从EF4.1中引入了Code-First方法. Code-First主要用于域驱动设计. 使用Code-First方法,你可以专注于域设计,并根据你的领域要求开始创建类,而不是首先设计数据库,然后创建与数据库设计相匹配的类. Code-First API将根据您的实体类和配置即时创建数据库. 作为开发人员,你首先从编写C#或VB.net

WPF MVVM 架构 Step By Step(2)(简单的三层架构示例及粘合代码GLUE code)

我们第一步就是去了解三层架构和问题然后去看MVVM是怎么去解决这些问题的. 现在,感觉和事实是完全不同的两个东西.当你看到三层架构的框图的时候,你会觉得每层的职责被分配的很好.但是当你你真的去写代码的时候你会发现其实一些层被迫去做本不应该他们做的额外的事情(违反了SOLID原则的S). 这个额外的工作就是在UI-Model和Model-Data access之间的代码.让我们就把这些代码称为“GLUE”代码.有两种主要的逻辑会造成“GLUE”代码(也许我知道的并不够多,其他的可以自己发现): 1

怎样快速实现整篇文档中英互译?这里有简单的方法

对于一篇中文word文档,怎么才能快速翻译成纯英文的呢?有很多同学说可以将里面的文字直接复制进浏览器进行翻译,在将其拷贝出来即可,但是对于一个几十页的文档而言,这样操作显然不是很高效.下面将文字翻译的方法告诉大家,希望可以帮助到大家! 1.首先,打开文字转语音转换软件,在画布的左侧可以看到有三个功能选项,点击选择[翻译] 2.在右边出现的文本框中可以将需要进行翻译的文本复制进文本框中: 3.在下方工具栏中,可以根据自己的需要将中文翻译成英文,或英文.日文翻译成中文.法文等等,在这里我们是要讲引文

【译】如何通过简单的3步恢复Windows7同时删除Ubuntu

如何通过简单的3步恢复Windows7同时删除Ubuntu 说明 写这篇文章对我来说是一件奇怪的事情,因为我通常都是提倡安装Ubuntu而卸载Windows的. 让今天写这篇文章更加奇怪的是,我决定在微软决定终止对Windows7的主流支持的这一天来写. 那么为什么我现在要写这篇文章呢? 到目前为止我曾经在很多场合被问到如何从一个装有Windows7或Windows8的双系统中删除Ubuntu系统,因此写这篇文章就变得有意义了. 我在圣诞节期间浏览了人们在我文章中的留言,感觉是时候把缺失的文章写

第九节 简单的文本处理

文本处理命令 1.tr命令 tr 命令可以用来删除一段文本信息中的某些文字.或者将其进行转换 使用方式: 常用选项: 2.col命令 col 命令可以将Tab换成对等数量的空格建,或反转这个操作 使用方式: 常用选项: 3.join命令 用于将两个文件中包含相同内容的那一行合并在一起 使用方式: 常用选项: 4.paste命令 paste这个命令与join 命令类似,它是在不对比数据的情况下,简单地将多个文件合并一起,以Tab隔开 使用方式: 常用选项: