文档章节

EF-CodeFirst模式的简单使用

o
 osc_w9s1w4o0
发布于 2019/03/28 16:28
字数 632
阅读 15
收藏 0

精选30+云产品,助力企业轻松上云!>>>

要求:

引用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中配置链接字符串

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
第六节:框架搭建之EF的Fluent Api模式的使用流程

一. 前言   沉寂了约一个月的时间,今天用一篇简单的文章重新回归博客,主要来探讨一下Fluent Api模式在实际项目中的使用流程。 1. Fluent API属于EF CodeFirst模式的一种,EF还有一种模式...

Yaopengfei
2018/09/25
0
0
第六节:框架搭建之EF的Fluent Api模式的使用流程

一. 前言   沉寂了约一个月的时间,今天用一篇简单的文章重新回归博客,主要来探讨一下Fluent Api模式在实际项目中的使用流程。 1. Fluent API属于EF CodeFirst模式的一种,EF还有一种模式...

osc_tiaoycd5
2018/09/25
4
0
EF开发方法

EF开发模式(Development Approaches with Entity Framework) 有三种不同的模式可以在您的应用中使用EF框架 Database First Code First ModelFirst Db-First 在DbFirst时,你使用VS中的EDM...

ytianxia6
2018/10/16
0
0
ORM系列之Entity FrameWork详解

一. 谈情怀   从第一次接触开发到现在(2018年),大约有六年时间了,最初阶段连接数据库,使用的是【SQL语句+ADO.NET】,那时候,什么存储过程、什么事务 统统不理解,生硬的将SQL语句传入...

Yaopengfei
2018/06/19
0
0
ORM系列之Entity FrameWork详解

一. 谈情怀   从第一次接触开发到现在(2018年),大约有六年时间了,最初阶段连接数据库,使用的是【SQL语句+ADO.NET】,那时候,什么存储过程、什么事务 统统不理解,生硬的将SQL语句传入...

osc_8k5qho63
2018/06/19
4
0

没有更多内容

加载失败,请刷新页面

加载更多

科技人文丨玻璃心:承受阈值与表达

大家好,我是SKODE。 有趣的灵魂,聊科技人文。 本系列博客地址:传送门 本文转载自B站:安慰记传送门 玻璃心是网络用语,意思是: 对负面事件的接受度很低 还有对别人可能给出的负面评价非常...

osc_u9mt0sus
21分钟前
20
0
迅睿CMS 游客不允许上传附件

游客不允许上传附件 迅睿CMS系统:https://www.xunruicms.com/ 本文档原文地址:https://www.xunruicms.com/doc/752.html...

迅睿CMS-PHP开源CMS程序
21分钟前
7
0
代理,注解,接口和实现类的小测验

* retention : 保留* policy : 策略 ps : 简单测试了一下手写代理,jdk动态代理,和cglib动态代理,根据其不同的结果分析其原理 一:测试目的 主要想看一下不同的代理模式对于目标类中方法上注...

岁一
22分钟前
6
0
V-Ray 5 For 3ds Max 正式发布:超越渲染 - 知乎

15个新功能,V-Ray5助你时间更节省,渲染更出色! 作者:ChaosGroup VRay 5 For 3ds Max 已正式发布! 2分钟视频,抢先预览新功能↓ 知乎视频 www.zhihu.com V-Ray 5 for 3ds Max 新增功能 ...

osc_o9u1um45
22分钟前
0
0
毕业的笑容和悲伤永远是校园的回忆

校园的风轻轻的拂过我的脸庞,风儿显得更加凉爽, 开满火红的凤凰树,染遍了校园的每个角落, 晚上那枝头蝉儿的竞相鸣奏,唱满了令人不舍的毕业歌, 它们彷彿告诉了我们要毕业了。 毕业典礼那...

瑾123
22分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部