EF之Code First代码优先

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(20)]//字符串长度
        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表,这样就达到了多对多的关系.
 



原文地址:https://www.cnblogs.com/iWaitYou/p/9556069.html

时间: 2024-10-31 15:15:28

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

MVC Code First (代码优先)

首先配置web.config <connectionStrings> <add name="BookDbContext" connectionString=" Data Source=.\SQLEXPRESS;Initial Catalog=sales;Persist Security Info=True;Integrated Security=SSPI;" providerName="System.Data.SqlClient"

(转)EF中数据优先,模型优先和代码优先

看了很多文章也不是很明白,说的都太书面化了,大家看看这图一下子就明白了,哈哈 其实看图很简单,database first和model first都是通过 data model创建的edmx文件,只不过model first模块可以自己根据需要创建和修改实体,显得更加灵活. codefist是一个class代码文件,它可以由一些第三方的软件可视化的创建,也是非常灵活的一种方式,目前被使用也是最广泛的. 二.Entity Framework Database first(数据库优先)使用过程 2.

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

写在前面: EF 中 Code First 的数据迁移网上有很多资料,我这份并没什么特别.Code First 创建视图网上也有很多资料,但好像很麻烦,而且亲测好像是无效的方法(可能是我太笨,没搞成功),我摸索出了一种简单有效的方法,这里分享给大家. EF是Entity Framework(实体框架)的简写,是微软出品的用来操作数据库的一个框架,会ASP.NET MVC的朋友对他肯定都不陌生.由于学艺不精,我对EF存在一疑虑,就不以[提问]的方式来问了,我以[总结]的方式来表达,如果总结有误的地

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

[原文地址]Code-First Development with Entity Framework 4   .NET 4随带发布了一个改进版的Entity Framework(EF)- 一个位于System.Data.Entity命名空间的数据访问函数库. 当Entity Framework在.NET 3.5 SP1里第一次发布的时候,很多程序员给我们提供了反馈,指出他们认为在第一个版本中不足的地方.SQL团队积极听取这些意见,并且在.NET 4的版本里吸取了意见. EF4里一些重大改进包含有

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

我看到很多nopCommerce论坛的用户问他们如何使用Entity Framework(EF)代码优先迁移来自定义nopCommerce,添加新的字段和entites核心.我实际上在做nopCommerce定制项目时使用了很多EF Migrations,我必须说它在开发中有很大帮助. 今天,我将与大家分享如何在nopCommerce项目中做到这一点!我将使用nopCommerce 3.20作为例子,但你可以很容易地应用这个概念到其他的vesions! 原文链接:http://www.nopcn

EF的代码优先设计

CodeFirst 用中文说是代码优先,此技术可以让我们先写代码,然后由Entity Framework根据我们的代码建立数据库 接下来用学生这个例子来演示,有学生表,课程表,和成绩表三张表 首先是Model层 学生表 using System; using System.Collections.Generic; using System.Linq; using System.Web; /**/ using System.ComponentModel.DataAnnotations;//验证 n

EF 如何code first

首先配置连接数据.sql server <connectionStrings> <add name="Model1" connectionString="data source=leo-pc;initial catalog=MemberShipDb;persist security info=True;user id=fandong90;password=fandong0920;" providerName="System.Data.Sq

8天掌握EF的Code First开发系列之3 管理数据库创建,填充种子数据以及LINQ操作详解

本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LINQ to Entities 使用LINQ to Entities操作实体 LINQ操作 懒加载和预加载 插入数据 更新数据 删除数据 本章小结 本人的实验环境是VS 2013 Update 5,windows 10,MSSQL Server 2008. 上一篇<Code First开发系列之领域建模和管理实体关系>,我们主要介绍了EF中“约定大于配置”的概念,如何创建数据

关于类库中EntityFramework之CodeFirst(代码优先)的操作浅析

前有ADO.NET,后有ORM模式的EntityFramework.这两种技术都实现了对数据库的访问操作.如果要说哪种技术好,就看项目架构的大小,使用者的熟练程度等等,毕竟萝卜白菜,各有所爱. 今天要记录和讨论的是项目之数据访问层中,使用EF来操作数据库,并可以自动更新数据库表的结构.闲话休提,逻辑步骤为先! 一.创建测试项目 目的:创建一个简单的带有模型层和数据访问层的控制台应用程序架构.如下图: Model:用作模型层,对应数据库中的表: DAL:数据访问层,实现对数据库的操作控制.引用Mo