1.什么是codefirst

EF4.1中开始支持Code First 。这种方式在领域设计模式中非常有用。使用Code First模式,你可以专注于领域设计,根据需要,为你一个领域的对象创建类集合,而不是首先来设计数据库,然后来根据数据库设计你的类,Code-First APis将会基于你的类和配置,为你创建数据库

2.我的第一个codefirst实例

  1)添加NuGet程序包EF(直接输入EF即可)

  2)创建一个类 EFDbContext 并继承与 DbContext,该类派生自System.Data.Entity。DbContext类,如下所示。派生DbContext的类在实体框架中称为context类。

  3)在model中创建实体类(用于映射到数据库)

  4)在EFDbContext 中定义要创建上下文的模拟生成器(通过对生成数据库时的一些约定)

  5)在EFDbContext 中定义DbSet集合(这些集合在创建派生类的实例时自动初始化)

  6)在web.config中添加连接数据库的字符串

  7)创建控制器,并调用上下文,运行(运行后可以在连接字符串所指定地址的数据库查看创建的数据库)

代码如下:

  EFDbContext :

using Entitys;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions; namespace CodeFirst2.Context
{
public class EFDbContext : DbContext
{
//调用父类的一个参数的构造函数初始化实例
//指定数据库,如果不指定,会在项目"App_Data"中自动生成
public EFDbContext() : base("EFDbContext") { } /// <summary>
/// 生成数据库
/// 通常,在创建派生上下文的第一个实例时仅调用此方法一次。
/// 然后将缓存该上下文的模型,并且该模型适用于应用程序域中的上下文的所有后续实例。
/// 通过在给定的 ModelBuidler 上设置 ModelCaching 属性可禁用此缓存,但注意这样做会大大降低性能。
/// 通过直接使用 DbModelBuilder 和 DbContextFactory 类来提供对缓存的更多控制。
/// </summary>
/// <param name="modelBuilder">定义要创建的上下文的模型的生成器。</param>
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//去除“设置表明为复数的约定”
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
} //这些集合在创建派生类的实例时自动初始化
public DbSet<People> Peoples { get; set; }
public DbSet<PeoType> PeoTypes { get; set; }
}
}

  实体代码:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; namespace Entitys
{
public class People
{
[Key]//主键
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]// 在插入行时,数据库将生成值
public Guid Id { get; set; }
public string Name { get; set; }
public string Age { get; set; }
public DateTime CreateDate { get; set; }
public int Type { get; set; } public virtual ICollection<PeoType> PeoTypes { get; set; } = new List<PeoType>();
}
}
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; namespace Entitys
{
public class PeoType
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
public string Name { get; set; }
}
}

  控制器:

using CodeFirst2.Context;
using System.Web.Mvc; namespace CodeFirst2.Controllers
{
public class DefaultController : Controller
{
// GET: Default
public ActionResult Index()
{
EFDbContext db = new EFDbContext();
return View();
}
}
}

  web.config:

<connectionStrings>
<add name="EFDbContext" connectionString="server=.;uid=sa;pwd=svse;database=EFDemo;" providerName="System.Data.SqlClient" />
</connectionStrings>

先实现第一个实例,后面将逐个讲解

2.第一个Codefirst实例的更多相关文章

  1. Week2(9月19日):增加一个CodeFirst的例子来说明

    Part I:提问  =========================== 1.上堂课中我们使用了()数据库,它是()可部署的,只需要将相应的()文件添加到应用程序的()文件夹,就可以使用了,该数据 ...

  2. Android 只开启一个Activity实例

    在一个Activity中,多次调用startActivity()来启动另一个Activity,要想只生成一个Activity实例,方法有两种. 方法一:设置起动模式 一个Activity有四种启动模式 ...

  3. 将oracle冷备份恢复到另外一个数据库实例中

    因更换服务器需要将Oracle数据库转移到另外台Oracle中.说明: 1.测试环境为:windows server2003 和 oracle 10g. 2.2台服务器安装的程序目录一样,数据目录不一 ...

  4. 第一个python实例--监控cpu

    #第一个python实例:监控cpu #/bin/bash/env Python from __future__ import print_function from collections impo ...

  5. servlet的一个web容器中有且只有一个servlet实例或有多个实例的理解1

    servlet的一个web容器中有且只有一个servlet实例或有多个实例的理解 (2013-06-19 19:30:40) 转载▼     servlet的非线程安全,action的线程安全 对提交 ...

  6. 12C RAC中的一个数据库实例自动crash并报ORA-27157、ORA-27300等错误

    rhel7.2上安装12C RAC数据库后,其中一个数据库实例经常会自动crash.查看alert日志发现以下错误信息: Errors in file /d12/app/oracle/diag/rdb ...

  7. 一个 XSD 实例

    一个 XSD 实例 本节会为您演示如何编写一个 XML Schema.您还将学习到编写 schema 的不同方法. XML 文档 让我们看看这个名为 "shiporder.xml" ...

  8. Asp.Net MVC是否针对每次请求都重新创建一个控制器实例

    一.Asp.Net MVC是否针对每次请求都重新创建一个控制器实例 默认情况下,答案是确定的. ControllerBuilder类 ControllerBuilder.Current用户获取默认的控 ...

  9. 如何让Windows程序只运行一个程序实例?

    要实现VC++或者MFC只运行一个程序实例,一般采用互斥量来实现,即首先用互斥量封装一个只运行一个程序实例的函数接口: HANDLE hMutex = NULL; void MainDlg::RunS ...

随机推荐

  1. String、StringBuffer、StringBuilder详解

    String类 字符串广泛应用在java编程中,String类在java.lang包中,String类是final修饰的,不能被继承,String类对象创建后不能修改,由0或多个字符组成,包含在一对双 ...

  2. Java 9 在win10环境搭建

    Java SDK 下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html JA ...

  3. vagrant(一)初识与安装

    链接:https://pan.baidu.com/s/1I2RNMNq9G-P4k42-U1Jjtw (这里有需要准备的安装包以及镜像文件,也可自己去官网下载)提取码:jis8 安装VirtualBo ...

  4. 第一次用angularJS做后台管理点滴

    很早以前就大概看过一点angualrjs,但是没有项目,一直没有进行下去,就是干巴巴的看着,过了一段时间发现什么也不记得了. 来yulebaby我的第一个后台管理是用easyui做的,做完那个以后发现 ...

  5. window 任务管理器

    用的是win10 系统,一般window都差不多. 1.查看进程: 2.查看端口:性能 --> 打开资源资源监视器 --> 网络 --> 侦听端口 3.查看磁盘活动(查看文件被哪个进 ...

  6. [CSP-S模拟测试]:Emotional Flutter(贪心)

    题目传送门(内部题51) 输入格式 第一行一个整数$t$表示数据组数.每组数据的第一行有三个整数$s,k,n$.第二行有$n$个整数$A_1,A_2,...,A_n$,依次表示黑白条的长度. 输出格式 ...

  7. JDK1.8 动态代理机制及源码解析

    动态代理 a) jdk 动态代理 Proxy, 核心思想:通过实现被代理类的所有接口,生成一个字节码文件后构造一个代理对象,通过持有反射构造被代理类的一个实例,再通过invoke反射调用被代理类实例的 ...

  8. 使用xorm将结构体转为sql文件

    操作步骤 (1)定义结构体 type User struct { Id int //表id Name string //姓名 ...}12345(2)编写代码,执行自动增量同步(mysql为例) im ...

  9. Html代码查看器

    Html代码查看器 效果: 分析: 1.连接网络需要权限 <uses-permission android:name="android.permission.INTERNET" ...

  10. java 字符串的操作方法

    方法 作用 范例   indexOf() 找到第一个字符出现的位置,()以下标来判断,返回的是字符所在的下标 int  num = String.indexOf("字符")   l ...