1.前言

通过英文可知,表示的是代码优先,一般创建EF都是先创建数据库,创建根据数据库的EF实体模型,而code - first 则是反过来!。。。

2.代码实战

我们这次创建的不是原来的数据库EF设计器,而是空的Code first 模型。如果说你的项目引用中没有entity framkwork,则需要去nuget程序包中安装ef框架(entity)

创建一个类,这个类就是数据的上下文,它的目录在MVC项目中的Model文件夹,base中的是你所创建的数据库名称,而你创建的表也是在model的这个文件夹中,

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web; namespace MyFirstCode.Models
{
public class Grade
{
public int GradeID { get; set; }
[Required]//必须唯一
[DisplayName("学生姓名")] //列名
[Column("SName")]//数据库中的列名
[StringLength()]//字符串长度
public string GradeName { get; set; } }
}
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
这是添加字段约束用到的命名空间 接下来看下我们的连接字符串部分:
 <connectionStrings>
<add name="MyDemoDB" connectionString="server=.;database=MyDemoDB;uid=sa;pwd=sa" providerName="System.Data.SqlClient"/>
</connectionStrings>

providerName="System.Data.SqlClient" 这个参数代表的是数据的来源,即来源于该命名空间下,我们也可以写成MySqlClient,当然前提是你引用了MySqlClient,呵呵,这样就对了项目迁移带来了很大的方面.

1对多的关系如何写?
假如有Student 和 Grade两个表 每个年纪有很多学生.
Student.cs:
 [ForeignKey("NianJi")]
public int GradeID { get; set; } /// <summary>
/// virtual 虚拟的。 延迟加载
/// </summary>
public virtual Grade NianJi { get; set; }
Grade.cs:
 public class Grade
{
public int GradeID { get; set; } public string GradeName { get; set; } public virtual IList<Student> Students { get; set; }
}

结果如图:

多对多的关系怎么写?
列入角色和用户表,每个用户有很多角色即role与user表
User.cs
public virtual IList<Role> Roles { get; set; }
Role.cs
public virtual IList<User> Users { get; set; }
生成完,它会出现一个RoleUser表,这样就达到了多对多的关系.

using (var context = new Model1())
{
context.Database.Initialize(true);
}

对这个上下文进行操作的时候它才会被创建  2018-11-15  21:57:15

												

EF之Code First代码优先的更多相关文章

  1. MVC Code First (代码优先)

    首先配置web.config <connectionStrings> <add name="BookDbContext" connectionString=&qu ...

  2. EF 中 Code First 的数据迁移以及创建视图

    写在前面: EF 中 Code First 的数据迁移网上有很多资料,我这份并没什么特别.Code First 创建视图网上也有很多资料,但好像很麻烦,而且亲测好像是无效的方法(可能是我太笨,没搞成功 ...

  3. 从实体框架核心开始:构建一个ASP。NET Core应用程序与Web API和代码优先开发

    下载StudentApplication.Web.zip - 599.5 KB 下载StudentApplication.API.zip - 11.5 KB 介绍 在上一篇文章中,我们了解了实体框架的 ...

  4. 使用Entity Framework 4进行代码优先开发

    [原文地址]Code-First Development with Entity Framework 4   .NET 4随带发布了一个改进版的Entity Framework(EF)- 一个位于Sy ...

  5. EF Code First 使用 代码优先迁移(三)

    迁移到特定版本(包括降级) 到目前为止,我们一直升级到最新的迁移,但有时您可能需要升级/降级到特定的迁移. 这是目前我数据库中的表:有四个表,我降级到addEndTime这个版本(这个版本是没有gra ...

  6. 代码优先-Code First

    非常有用的两篇文章 MSDN:Code First 迁移 博客园:CodeFirst数据迁移(不丢失数据库原有数据) EF有三种开发模式:Model First,Database First 和 Co ...

  7. C# ORM—Entity Framework 之Code first(代码优先)(二)

    一.Entity Framework Code first(代码优先)使用过程 1.1Entity Framework 代码优先简介 不得不提Entity Framework Code First这个 ...

  8. EF框架搭建小总结--CodeFirst代码优先

    前言:之前在下总结编写了一篇 EF框架搭建小总结--ModelFirst模型优先 博文,看到一段时间内该博文的访问量蹭.蹭蹭.蹭蹭蹭...往上涨(实际也不是很多,嘿嘿),但是还是按捺不住内心的喜悦(蛮 ...

  9. 在快速自定义的NopCommerce中使用实体框架(EF)代码优先迁移

    我看到很多nopCommerce论坛的用户问他们如何使用Entity Framework(EF)代码优先迁移来自定义nopCommerce,添加新的字段和entites核心.我实际上在做nopComm ...

随机推荐

  1. java类路径classpath

    java编译器编译.java文件和java虚拟机执行.class文件时的路径和写法不一样. 在没有设置任何classpath环境变量的情况下,javac可以编译全路径的.java文件.例如: java ...

  2. Codeforces 741B Arpa's weak amphitheater and Mehrdad's valuable Hoses (并查集+分组背包)

    <题目链接> 题目大意: 就是有n个人,每个人都有一个体积和一个价值.这些人之间有有些人之间是朋友,所有具有朋友关系的人构成一组.现在要在这些组中至多选一个人或者这一组的人都选,在总容量为 ...

  3. MFC学习RepositionBars

    学习过程中用到了就找了下资料 https://blog.csdn.net/u012372584/article/details/50718968

  4. Win10 教育版

    Windows 10 版本 1607 引入了专为 K-12 机构的特有需求而设计的两个版本:Windows 10 专业教育版和 Windows 10 教育版. 这些版本为不断发展的 K-12 教育 I ...

  5. D3---01基础的柱状图制作(转)

    ---文章转自 http://d3.decembercafe.org/index.html  ,Created by 十二月咖啡馆. 一个完整的柱形图包含三部分:矩形.文字.坐标轴. 首先要布置一个大 ...

  6. 如何快速求解第一类斯特林数--nlog^2n + nlogn

    目录 参考资料 前言 暴力 nlog^2n的做法 nlogn的做法 代码 参考资料 百度百科 斯特林数 学习笔记-by zhouzhendong 前言 首先是因为这道题,才去研究了这个玩意:[2019 ...

  7. 源自于NEO的KeyValue 数据库面世啦

    虽然想把标题取得大一点,但终究不是什么太大不了的工作,还是安分守己的开始介绍吧.   项目组成   这个项目叫做LightDB 由三个部分构成 Lightdb.lib 是对rocksdb做了一层封装, ...

  8. 什么是布局?Android中的布局是怎样的?

    布局管理器(通常被称为是布局)是对ViewGroup类的扩展,是用来控制子控件在UI中的位置. Android SDK包含了许多布局类,在为视图.Fragment和Activity创建UI时,可以使用 ...

  9. 百度TTS的来由

    #### https://home-assistant.io/components/tts.baidu/#### https://github.com/charleyzhu/HomeAssistant ...

  10. MyBatis(七) 自定义映射结果ResultMap

    (1)接口中对应的方法 public Emp getEmpById(Integer id); (2)Mapper文件 <resultMap type="com.eu.bean.Emp& ...