EF 分两种模式 codefirst(就是不知道数据是啥,也没有数据库)  和 database fist (数据已经设计好了)

首先打开vs  新建一个项目 创建一个控制台程序

然后 新建一个Teacher 类

    public class Teacher
{
public int TeacherId { get; set; }
public string Name { get; set; }
public string Country { get; set; }
public string Description { get; set; }
public List<Student> Students { get; set; }//一个老师有多个学生,同下说明
//一个老师有多个教程,这里EF会自动设置外键到对应的Course 表
//注意course这个表要写 public Teacher Teacher { get; set; } 这样才能对应
public List<Course> Courses { get; set; }
}

然后新建一个Student类  这里Teacher类和 Student 是1:M的关系(一对多)

  public class Student
{
public int StudentId { get; set; }
public string Name { get; set; }
public string Owner { get; set; }
public Teacher Teacher { get; set; }//一个学生对应一个老师(这里也可以多个老师)可以自己写 public IList<Course> Courses { get; set; }//一个学生多门课
}

同时新建一个Course  课程类 这里 每个学生,每个老师都有自己的课

 public  class Course
{
public int CourseId { get; set; }
public string Name { get; set; }
public Student Student { get; set; }
public Teacher Teacher { get; set; }
}

等表建好了以后我们要进行往数据库插入数据了,这里需要EF的实体DefaultContext 需要继承  DbContext 这个父类

对应的表写在下面

    class DefaultContext : DbContext
{
public DbSet<Teacher> Teachers { get; set; }
public DbSet<Student> Students { get; set; }
public DbSet<Course> Courses { get; set; } }

现在万事具备之前实现,现在我们在Program.cs中实现如下代码

 for (int i = ; i < ; i++)
{
var d = DateTime.Now.Date.ToString("yyyyMM");
var destination = new Teacher
{
Country = "Indonesia" + i.ToString(),
Description = "EcoTourism at its best in exquisite Bali",
Name = "Bali"
};
var student = new Student
{
Name = "Indonesia" + i.ToString(),
Teacher = destination
};
var couse = new Course
{
Name = "Indonesia" + i.ToString(),
Student = student,
Teacher = destination
};
using (var context = new DefaultContext())
{
context.Teachers.Add(destination);
context.Students.Add(student);
context.Courses.Add(couse);
context.SaveChanges();
}
}

此刻打开你的sqlserver  如下所示:

找到 DefaultContext  查看数据是否导入成功

这样热腾腾的三个表就进去啦,这就是 EF的code first  ,相关的表的外键会自动创建

相关查询可以用如下代码

IList<Teacher> c2 = context.Teachers.AsNoTracking().Include("Students").Include("Courses").ToList();
IList<Teacher> c = context.Teachers.AsNoTracking().Include("Students").ToList();

注意引入 using System.Data.Entity;

不懂的可以咨询我,微信如下:

EF 下的code fist 模式编程的更多相关文章

  1. .NET跨平台之mac 下vs code 多层架构编程

    合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入,申请备注填写姓名+技术+工作年限) Q  Q:408365330     E-Mail:eg ...

  2. 基于EF Core的Code First模式的DotNetCore快速开发框架

    前言 最近接了几个小单子,因为是小单子,项目规模都比较小,业务相对来说,也比较简单.所以在选择架构的时候,考虑到效率方面的因素,就采取了asp.net+entity framework中的code f ...

  3. C# 嵌入dll 动软代码生成器基础使用 系统缓存全解析 .NET开发中的事务处理大比拼 C#之数据类型学习 【基于EF Core的Code First模式的DotNetCore快速开发框架】完成对DB First代码生成的支持 基于EF Core的Code First模式的DotNetCore快速开发框架 【懒人有道】在asp.net core中实现程序集注入

    C# 嵌入dll   在很多时候我们在生成C#exe文件时,如果在工程里调用了dll文件时,那么如果不加以处理的话在生成的exe文件运行时需要连同这个dll一起转移,相比于一个单独干净的exe,这种形 ...

  4. EF Core 的 Code First 模式

    0 前言 本文正文第一节,会对 Code First 进行基本的介绍,以及对相关名词进行说明,读者一开始可以不用在这里消耗过多时间,可以先操作一遍例子,再回过头理解. 第二节,以一个简单的例子,展示 ...

  5. 【基于EF Core的Code First模式的DotNetCore快速开发框架】完成对DB First代码生成的支持

    前言 距离上一篇文章<基于EF Core的Code First模式的DotNetCore快速开发框架>已过去大半个年头,时光荏苒,岁月如梭...比较尴尬的是,在这大半个年头里,除了日常带娃 ...

  6. EF三种编程方式详细图文教程(C#+EF)之Code First

    Code First Code First模式我们称之为“代码优先”模式,是从EF4.1开始新建加入的功能.使用Code First模式进行EF开发时开发人员只需要编写对应的数据类(其实就是领域模型的 ...

  7. EF应用一:Code First模式

    EF的核心程序集位于System.Data.Entity.dll和System.Data.EntityFramework.dll中.支持CodeFirst的位于EntityFramework.dll中 ...

  8. 关于EF Code First模式不同建模方式对建表产生的影响

    今天在学EF Code First模式的时候,发现几个很有趣的问题,问题如下: 1.当编写玩实体后,不指定任何主键约束,EF会找长的最像Id的,然后设置其为主键,验证代码如下: //User类 cla ...

  9. ORM系列之二:EF(2)Code First

    目录 1. Code First是什么? 2. Code First 简单示例 3. 数据存储 4. 迁移 Code First是什么 Code First 顾名思义就是先写代码,当然不是乱写,而是按 ...

随机推荐

  1. UUShutdown关机工具 - 给 Windows8.1Metro 开始屏幕添加 关机重启按钮

    UUShutdown,给开始屏幕(开始菜单)添加重启关机等按钮 如图: 安装完成之后找到开始菜单程序文件夹中的快捷方式,附加到开始屏幕即可. 2.0加入主程序界面,支持换肤和定时: 看见的需要那就拿去 ...

  2. WTIR Updating Page

    NO REPLY. ############### #14090704# ###############

  3. Android AES加密算法,现在实际上

    昨天,老板让我来看看android加密算法.于是在网上找了找,发现AES加密算法.(当然,MD5,BASE64什么http://snowolf.iteye.com/blog/379860这篇文章列举了 ...

  4. TodoList开发笔记 – PartⅠ

    做了一年多的桌面软件,最近开始转向Web方面的开发,既然比较熟悉Net那么首当其冲就是学习ASP.Net,以及HTML.CSS.Javascript. 为了检验这个把星期来的学习成果,着手做了一个To ...

  5. james+javamail入门

    James+Javamail构建邮件服务(一) 本文描述如何使用James搭建具备一定邮件过滤.邮件操作功能的邮件服务器,以及使用Javamail实现对James服务器邮件的收发功能. 1关于Jame ...

  6. 程序媛也会画图 之 在ubuntu下用GIMP制作gif

    动画是什么?就是几张图片很快的顺序播放嘛,今天就画画gif小图吧,以后在演示效果图的时候也用的上. 1.准备一个小图 就用小绿人好了 2.打开GIMP 3.新建一个图片打开  文件 ->新建输入 ...

  7. 关于模板pair的用法

    在挑战程序设计竞赛中看到调用pair,就上网查了一下 类型申明有两种 template <class T1, class T2> struct pair typedef pairt< ...

  8. [转]Inside Swift

    原文地址:http://www.eswick.com/2014/06/inside-swift/   Inside Swift Swift is Apple's new programming lan ...

  9. c语言,string库函数itoa实现:将int转换为char*

    原型:char  *itoa(int   value,char   *string)        功能:将整数value转换成字符串存入string,默认为十进制;      说明:返回指向转换后的 ...

  10. TOGAF企业连续体和工具之企业连续体构成及架构划分

    TOGAF企业连续体和工具之企业连续体构成及架构划分 又回头看了之前文章的评论,本人也同样感慨这些文章的确像政治课本般的虚无缥缈,所以对费力看完却觉得无从下手的看官致以诚挚的歉意和理解,因为这个问题也 ...