EF 下的code fist 模式编程
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 模式编程的更多相关文章
- .NET跨平台之mac 下vs code 多层架构编程
合肥程序员群:49313181. 合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入,申请备注填写姓名+技术+工作年限) Q Q:408365330 E-Mail:eg ...
- 基于EF Core的Code First模式的DotNetCore快速开发框架
前言 最近接了几个小单子,因为是小单子,项目规模都比较小,业务相对来说,也比较简单.所以在选择架构的时候,考虑到效率方面的因素,就采取了asp.net+entity framework中的code f ...
- 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,这种形 ...
- EF Core 的 Code First 模式
0 前言 本文正文第一节,会对 Code First 进行基本的介绍,以及对相关名词进行说明,读者一开始可以不用在这里消耗过多时间,可以先操作一遍例子,再回过头理解. 第二节,以一个简单的例子,展示 ...
- 【基于EF Core的Code First模式的DotNetCore快速开发框架】完成对DB First代码生成的支持
前言 距离上一篇文章<基于EF Core的Code First模式的DotNetCore快速开发框架>已过去大半个年头,时光荏苒,岁月如梭...比较尴尬的是,在这大半个年头里,除了日常带娃 ...
- EF三种编程方式详细图文教程(C#+EF)之Code First
Code First Code First模式我们称之为“代码优先”模式,是从EF4.1开始新建加入的功能.使用Code First模式进行EF开发时开发人员只需要编写对应的数据类(其实就是领域模型的 ...
- EF应用一:Code First模式
EF的核心程序集位于System.Data.Entity.dll和System.Data.EntityFramework.dll中.支持CodeFirst的位于EntityFramework.dll中 ...
- 关于EF Code First模式不同建模方式对建表产生的影响
今天在学EF Code First模式的时候,发现几个很有趣的问题,问题如下: 1.当编写玩实体后,不指定任何主键约束,EF会找长的最像Id的,然后设置其为主键,验证代码如下: //User类 cla ...
- ORM系列之二:EF(2)Code First
目录 1. Code First是什么? 2. Code First 简单示例 3. 数据存储 4. 迁移 Code First是什么 Code First 顾名思义就是先写代码,当然不是乱写,而是按 ...
随机推荐
- [转]C/C++:构建你自己的插件框架
本文译自Gigi Sayfan在DDJ上的专栏文章.Gigi Sayfan是北加州的一个程序员,email:gigi@gmail.com. 本文是一系列讨论架构.开发和部署C/C++跨平台插件框架的文 ...
- jQuery无限级联下拉框插件
自己编写jQuery插件 之 无限级联下拉框 因为是级联,所以数据必须是树型结构的,我这里的测试数据如下: 看下效果图: 1.>图一: 2.>图二: 3.>图三: 由图可知,下拉 ...
- Linux--安装过程中的根文件系统的分析
前言: 在这篇文章中S3C6410公版的Linux BSP和U-Boot为了分析,名词和数据文件的所有内容本文是基于环境为例,所有的代码是在设置的示例进行分析的过程中.哈. 假设有不对或者不完好的地方 ...
- AjaxPro实现无刷新更新数据
使用AjaxPro实现无刷新更新数据 需求 在一个页面动态无刷新的更新后台得到的数据.要想无刷新的更新数据,需要使用Javascript能够获取后台返回的数据,然后通过第三方Javascript库(J ...
- SufaceView(绘图类)
public class MainActivity extends Activity { GrameView grameView; @Override public void onCreate(Bun ...
- SQLServer数据库误删数据找回
记一次SQLServer数据库误删数据找回 昨天 同事在本机清理数据库表时,连接到了生产机,误删了二十几张表,幸好是晚上加班的时候删除的,生产机上当时是一天一备份,还原备份是最后的策略,最关键的还是要 ...
- c# in deep 之委托
通俗来讲,委托就是吩咐别人去做某件事,但不知道他具体会怎么做.使用委托必须注意的一个问题是内存泄露问题:假如委托实例本身不能被回收,委托实例会阻止他的目标被作为垃圾回收.尤其是假如某“短命”的对象调用 ...
- CLR_Via_C#学习笔记之枚举
CLR_Via_C#学习笔记之枚举 枚举类型(Enum)定义的一组"符号名称/值"配对:因为枚举类型使用程序更容易编写.阅读和维护,而且它是强类型: 枚举是值类型:由System. ...
- SQLSERVER用无中生有的思想来替代游标
SQLSERVER用无中生有的思想来替代游标 SQLSERVER用无中生有的思想来替代游标 昨天在MSDN论坛看到一个帖子,帖子中LZ需要根据某列的值把其他列的值插入到额外列 帖子地址:http:// ...
- js 上传下载(留着备用)
js 上传下载(留着备用) 下载文件 1. <a href="#" onClick="download()">下载文件</a> & ...