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. vmware版本选择

    vmware哪个版本好用 2014-03-10 22:59一枚小白3 | 分类:常见软件 | 浏览6743次 准备装ghost xp,想问下哪个版本更适合?或者现在哪个版本更稳定,求不要复制,求大神解 ...

  2. 【Eureka】实现原理

    Eureka Client 拉取Eureka Server中的全量注册表 注册自身实例InstanceInfo至Eureka Server 初始化定时任务 心跳(续约)任务 拉取增量注册表更新本地注册 ...

  3. php fmod()函数 语法

    php fmod()函数 语法 作用:fmod()函数的作用是两个数值做除法运算后的余数 语法:fmod(X,Y).大理石平台哪家好 参数: 参数 描述 X 必须,X为除数 Y 必须,被除数,如果Y为 ...

  4. php ltrim()函数 语法

    php ltrim()函数 语法 ltrim()函数怎么用? php ltrim()函数用于删除字符串左边的空格或其他预定义字符,语法是ltrim(string,charlist),返回经过charl ...

  5. 09-排序3 Insertion or Heap Sort(25 分)

    According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and gr ...

  6. IPC机制总结

    IPC机制: 1. 多进程概念: 2. 序列化机制和Binder: 3. 进程间通信:Bundle.文件共享.AIDL.Messenger.ContentProvider.Socket: 操作系统的设 ...

  7. python3安装pdfminer并使用

    1.python3不同与2版本不能使用pdfminer pip install pdfminer3k 2.使用pdfminer解析相应文档并保存到相应的文件夹中 # encoding : udf-8 ...

  8. EAM(Enterprise Asset Management)企业资产管理系统

    EAM (Enterprise Asset Management)的缩写,EAM系统是指企业资产管理系统. EAM系统是在资产比重较大的企业,在资产建设.维护中减少维护成本,提高资产运营效率,通过现代 ...

  9. 26 October in 614

    Practice tower 有 \(N\,(2\le N\le 600000)\) 块砖,要搭一个 \(N\) 层的塔,要求:如果砖 \(A\) 在砖 \(B\) 上面,那么 \(A\) 不能比 \ ...

  10. Xcode cannot run using the selected device after upgrade

    Please follow below step 1>Go to Project Build setting 2>Change compiler for c/c++/objective c ...