1 创建各个实体类

2 创建一个空数据模型,然后删除掉,为了引入Entity Framework和System.Data.Entity

3 为实体类增加标注

4 为实体增加导航属性

5 在App.config configuration标签里面增加connectionStrings标签,并增加连接字符串

6 创建数据操作类继承DbContext ,构造函数参数为“name=connStr”

7 增加两个DbSet属性,对应操作的实体

8 重写OnModelCreating方法,使得生成的表不包含复数;

9 调用context.Database.CreateIfNotExists()在对应的数据库下面生成表

10 通过数据操作类操作表

//ClassInfo

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CodeFirstDemo
{
    public class ClassInfo
    {
        [Key]
        public int Id { get; set; }
        [Required]
        [StringLength(32)]
        public string ClassName { get; set; }
        [Required]
        public DateTime CreateTime { get; set; }
        public ICollection<StudentInfo> StudentInfo { get; set; }
    }

}

//StudentInfo

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CodeFirstDemo
{
    public class StudentInfo
    {
        [Key]
        public int Id { get; set; }
        [Required]
        [StringLength(32)]
        public string StudentName { get; set; }
        [Required]
        public DateTime CreateTime { get; set; }
        [Required]
        public ClassInfo ClassInfo { get; set; }
    }

}

//MyDataContext

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CodeFirstDemo
{
    public class MyDataContext:DbContext
    {
        public MyDataContext()
            : base("name = ConnStr")
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        }

        public DbSet<ClassInfo> ClassInfo { get; set; }
        public DbSet<StudentInfo> StudentInfo { get; set; }

    }

}

//主方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CodeFirstDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            MyDataContext db = new MyDataContext();
            db.Database.CreateIfNotExists();
            ClassInfo classInfo = new ClassInfo();
            classInfo.ClassName = "abc";
            classInfo.CreateTime = DateTime.Now;
            db.ClassInfo.Add(classInfo);

            StudentInfo stu1 = new StudentInfo();
            stu1.StudentName = "zhangsan";
            stu1.CreateTime = DateTime.Now;
            stu1.ClassInfo = classInfo;
            StudentInfo stu2 = new StudentInfo();
            stu2.StudentName = "Lisi";
            stu2.CreateTime = DateTime.Now;
            stu2.ClassInfo = classInfo;
            db.StudentInfo.Add(stu1);
            db.StudentInfo.Add(stu2);
            db.SaveChanges();
        }
    }
}

EF CodeFirst的步骤的更多相关文章

  1. EF CodeFirst 命令步骤

    添加EntityFramework 命令:Install-Package EntityFramework 1.启用迁移 Enable-Migrations 2.为挂起的Model变化添加迁移脚本 Ad ...

  2. [.NET领域驱动设计实战系列]专题一:前期准备之EF CodeFirst

    一.前言 从去年已经接触领域驱动设计(Domain-Driven Design)了,当时就想自己搭建一个DDD框架,所以当时看了很多DDD方面的书,例如领域驱动模式与实战,领域驱动设计:软件核心复杂性 ...

  3. EF Codefirst 初步学习(二)—— 程序管理命令 更新数据库

    前提:搭建成功codefirst相关代码,参见EF Codefirst  初步学习(一)--设置codefirst开发模式 具体需要注意点如下: 1.确保实体类库程序生成成功 2.确保实体表类库不缺少 ...

  4. 1.【使用EF Code-First方式和Fluent API来探讨EF中的关系】

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/relationship-in-entity-framework-using-code-firs ...

  5. [转]Using Entity Framework (EF) Code-First Migrations in nopCommerce for Fast Customizations

    本文转自:https://www.pronopcommerce.com/using-entity-framework-ef-code-first-migrations-in-nopcommerce-f ...

  6. EF CodeFirst 如何通过配置自动创建数据库<当模型改变时>

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    本篇为进阶篇,也是弥补自己之前没搞明白的地方,惭愧 ...

  7. EF CodeFirst增删改查之‘CRUD’

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    本篇旨在学习EF增删改查四大操作 上一节讲述了EF ...

  8. EF CodeFirst 创建数据库

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    话说EF支持三种模式:Code First   M ...

  9. 新年奉献MVC+EF(CodeFirst)+Easyui医药MIS系统

    本人闲来无事就把以前用Asp.net做过的一个医药管理信息系统用mvc,ef ,easyui重新做了一下,业务逻辑简化了许多,旨在加深对mvc,ef(codefirst),easyui,AutoMap ...

随机推荐

  1. Android RadioGroup的RadioButton 选择改变字体颜色和背景颜色

    RadioGroup <RadioGroup android:id="@+id/client_charge_radiogroup" android:layout_width= ...

  2. [Javascript] Case insensitive sorting for string arrays

    We look at the default Array.prototype.sort behavior and discuss how you can do case insensitive str ...

  3. iOS过场动画调研笔记

    前言 因项目须要,近期一段时间都在调研iOS的过场动画.对于我来说这是一个之前没有太涉及的领域,所以有必要把调研的过程和自己的一些理解纪录下来 为什么要自己定义过场动画? 假设大家有关注Materia ...

  4. Android中的动画详解系列【2】——飞舞的蝴蝶

    这一篇来使用逐帧动画和补间动画来实现一个小例子,首先我们来看看Android中的补间动画. Android中使用Animation代表抽象的动画类,该类包括下面几个子类: AlphaAnimation ...

  5. Android 如何Android中自定义Navigationbar

    在如何控制Android系统中NavigationBar 的显示与隐藏文章里简要地介绍了Navigationbar的背景知识, NavigationBar的代码是放在... rameworksasep ...

  6. mount新磁盘

    fdisk -l  mkfs.xfs /dev/xvdb  mkdir /data mount /dev/xvdb /data df -h vi /etc/fstab /dev/xvdb /data ...

  7. ### Hibernate中的事务与并发 ###

    **事务相关的概念** 1. 什么是事务 * 事务就是逻辑上的一组操作,组成事务的各个执行单元,操作要么全都成功,要么全都失败. * 转账的例子:冠希给美美转钱,扣钱,加钱.两个操作组成了一个事情! ...

  8. 【32.89%】【codeforces 719A】Vitya in the Countryside

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  9. 阿里云服务器apache服务器局域网访问公网访问配置

    阿里云服务器apache服务器局域网访问公网访问配置 一.总结 一句话总结: 1.再总结-------------------------------------------------------- ...

  10. git基本原理

    git基本原理 一.总结 一句话总结:把原理那张图图背下来 1.git中的四大区,除了远程仓库和本地仓库,剩下两个是什么? 解答:工作区和暂存区. 2.git中的四大区(例如远程仓库和本地仓库),他们 ...