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 顾名思义就是先写代码,当然不是乱写,而是按 ...
随机推荐
- Sql Server 主键由字母数字组成并按照数字自动增长
在SQL SERVER 中如果我们想要使主键按照一定规则自动增长我们可以这样做: 这里我们新建一张研究表,里面有研究ID,研究人员姓名和研究医院. 我们使SicentificId 设为主键 并且从1开 ...
- leetco Path Sum II
和上一题类似,这里是要记录每条路径并返回结果. Given the below binary tree and sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 ...
- 31、Thinking in Java
- linux $ 类型变量 及Makefile 中 $ 类型变量的含义
Shell 命令中: $$: shell pid $!: pid of the last process running in shell $?: shell command return code ...
- Linq无聊练习系列8---开放式并发事务,null和 DateTime,string操作练习
/*********************开放式并发事务,null和 DateTime,string操作练习**********************************/ //所谓并发,就是 ...
- 增删查改-MySQL
查询: 在MySQL中,select的基本语法形式: select 属性列表 from 表名和视图 [where 条件表达式] [group by 属性名 [having 条件表达式]] [order ...
- 【javascript】判断浏览设备是手机还是电脑
判断页面浏览设备是手机还是电脑,代码如下: function browserRedirect() { var sUserAgent = navigator.userAgent.toLowerCase( ...
- iOS LBS相关: 定位和中国特色的位置偏移纠正
LBS模块,首先当然是定位,获取自己所在的位置.主要用到的就是CLLocationManager,实例一个,然后调用startUpdatingLocation即可.其中可以指定精度CLLocation ...
- SOCKET网络编程5
SOCKET网络编程快速上手(二)——细节问题(5)(完结篇) 6.Connect的使用方式 前面提到,connect发生EINTR错误时,是不能重新启动的.那怎么办呢,是关闭套接字还是直接退出进程呢 ...
- xcode5向APP store上传应用的时候注意点
最近我在向appstore 上传应用的时候遇到了各种问题,由于网上的一些教程都是很久以前写的了,现在发布网站有些改动,所以自己走了很多弯路,不多说了,自己记录下犯下的错误吧.我是按照这片博客操作的:点 ...