要求:

引用EntityFramework

SqlServer数据库

一个C#项目

项目结构:

将实体模型映射到数据库,只需要在下面三个地方进行配置、

实体类(数据库映射)

DbContext上下文(存储库)

数据库连接字符串配置

1、实体类(数据库映射)

每个数据库对象在程序中都有一个类可以对应。
需要的了解的知识:类和数据库映射相关的知识。
例子:
一个数据库映射类

public class TModel
{
[Key]//标记主键
public int ID{get;set;} public string Name{get;set;} [NotMap]//因为直接把Model和数据库映射Model作为同一个,所以存在部分差异,这个字段不需要保存,所以配置为不映射到数据库
public string ShowInfo{get;set;}
}

2、实现 DbContext

DBContext 实现了工作单元模式和存储库模式,也就是说这个可以代替一个表一个Repository的方式,直接在DbContext中定义表结构就可以直接使用了。

数据库生成功能就是在该类中实现。
工作单元模式:对象可以在程序中更改,等到SaveChange 时才保存到数据库。
把一系列业务对象的持久化由工作单元实现类统一在一个类管理,而不用为每个数据库对象建一个仓储层。

例子:
定义一个上下文。

public class TestContext : System.Data.Entity.DbContext
{
public TestContext() : base("LogStr")//LogStr为web.config中的链接字符串。有多种设置链接的方式。
{
       //设置初始化方式,可以使用的策略类有:
       //CreateDatabaseIfNotExists 如果不存在数据库,建立数据库;
       //DropCreateDatabaseAlways 总是重建数据库;
       //DropCreateDatabaseIfModelChanges 如果定义的模型发生改变,重建数据库。
       //不设置该项,当模型发生改变时,查询时会报错。当数据库不存在时,创建数据库
Database.SetInitializer(new CreateDatabaseIfNotExists<TestContext>());
  } //使用属性的方式-映射的数据表对象
  public DbSet<TModel> TModels { get; set; } //自定义映射关系,可省略,常用于各种骚操作,一个发挥想象力的地方。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    //常见的操作
    //1、以反射的信息添加表,如某一程序集中的类,动态添加映射到数据库中,可以不使用属性。
    //2、自定义映射模式,如外键关系等映射模式,属性名和表名的映射关系。
}
}

  

例子:
手动重建数据库。

using (TestContext logContext = new TestContext())
{
  logContext.Database.Initialize(true);
}

3、Web.Config或App.config中配置链接字符串

EF-CodeFirst模式的简单使用的更多相关文章

  1. EF CodeFirst系列(6)---配置1对1,1对多,多对多关系

    这一节介绍EF CodeFirst模式中的1对0/1,1对多,多对多关系的配置,只有梳理清楚实体间的关系,才能进行愉快的开发,因此这节虽然很简单但是还是记录了一下. 1. 1对0/1关系配置 1. 通 ...

  2. EF CodeFirst系列(1)---CodeFirst简单入门

    1.什么是CodeFirst 从EF4.1开始,EF可以支持CodeFirst开发模式,这种开发模式特别适用于领域驱动设计(Domain Driven Design,大名鼎鼎的DDD).在CodeFi ...

  3. 第十四节: EF的三种模式(四) 之 原生正宗的 CodeFirst模式的默认约定

    一. 简介 1. 正宗的CodeFirst模式是不含有edmx模型,需要手动创建实体.创建EF上下文,然后生成通过代码来自动映射生成数据库. 2. 旨在:忘记SQL.忘记数据库. 3. 三类配置:On ...

  4. 第十三节: EF的三种模式(三) 之 来自数据库的CodeFirst模式

    一. 简介 [来自数据库的Code First模式]实质上并不是CodeFirst模式,而是DBFirst模式的轻量级版本,在该模式中取消了edmx模型和T4模板,直接生成了EF上下文和相应的类,该模 ...

  5. 第十七节: EF的CodeFirst模式的四种初始化策略和通过Migration进行数据的迁移

    一. 四种初始化策略 EF的CodeFirst模式下数据库的初始化有四种策略: 1. CreateDatabaseIfNotExists:EF的默认策略,数据库不存在,生成数据库:一旦model发生变 ...

  6. EF的CodeFirst模式自动迁移(适用于开发环境)

    EF的CodeFirst模式自动迁移(适用于开发环境) 1.开启EF数据迁移功能 NuGet包管理器------>程序包管理控制台---------->Enable-Migrations ...

  7. 6.Configure Domain Classes(配置领域类)【EF Code-First 系列】

    在前面的部分中,我们学习了Code-First默认约定,Code-First使用默认的约定,根据你的领域类,然后生成概念模型. Code-First模式,发起了一种编程模式:约定大于配置.这也就是说, ...

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

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

  9. EF CodeFirst系列(3)---EF中的继承策略(暂存)

    我们初始化数据库一节已经知道:EF为每一个具体的类生成了数据库的表.现在有了一个问题:我们在设计领域类时经常用到继承,这能让我们的代码更简洁且容易管理,在面向对象中有“has  a”和“is a”关系 ...

  10. EF CodeFirst学习

    EF CodeFirst 真是时光如梦,岁月如歌,自己一不留神就被后浪拍在了沙滩上,就连我要学的这个东西也是12年就在博客园很火了. EF有三种开发模式,DatabaseFirst, ModelFir ...

随机推荐

  1. OpenCV---像素运算

    像素运算 分为算术运算和逻辑运算 算术运算: 加减乘除 调节亮度 调整对比度 逻辑运算: 与或非 遮罩层控制 一:算术运算 import cv2 as cv import numpy as np de ...

  2. Jenkins使用教程之创建job

    第一部分:常规设置(general) 1.点击新建,进入新建项目页面 2.输入项目名称,选择构建一个自由风格的软件项目(里面可以自己自由进行配置,使用更加灵活),点击ok 3.项目名称与描述 4.gi ...

  3. LightOJ 1017 - Brush (III) 记忆化搜索+细节

    http://www.lightoj.com/volume_showproblem.php?problem=1017 题意:给出刷子的宽和最多横扫次数,问被扫除最多的点是多少个. 思路:状态设计DP[ ...

  4. 软件测试(三)—— 参数化测试用例(Nextday.java)

    import static org.junit.Assert.*; import java.lang.reflect.Array; import java.util.Arrays; import ja ...

  5. input美化问题

    对于前端来说,一个比较大的问题是,当HTML提供的最原始的控件长的很丑可是又没有相应的属性去更改,碰到这个问题时我们应该怎么办?比如radio的那个单选框我觉得好丑啊,怎么办呢?一个很好的思路就是把它 ...

  6. CSS进阶知识

    html { -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; } 该属性的作用是 ...

  7. (2.1)windows下Nutch1.7的安装

    酒店评论情感分析系统(二)——Nutch安装 一.需求部分 Nutch是Java开发的所以需要下载Java JDK. 下载地址http://java.sun.com/javase/downloads/ ...

  8. 搭建Elasticsearch5.6.8 分布式集群

    集群搭建 1.master[192.168.101.175] 配置elasticsearch.yml #集群名称 所有节点要相同 cluster.name: my-application #本节点名称 ...

  9. jQuery技术内幕 深入解析jQuery架构设计与实现原理

    jquery的外衣 jquery是一个轻量级的JS框架 //以下截取自jquery源码片段 (function( window, undefined ) { /* 源码内容 */ })( window ...

  10. angular 开发之proxy

    创建proxy配置文件proxy.conf.json 内容如下  {   "/api/*": { "target": "https://abc.com ...