一、前言

       久闻EF大名,之前做C/S产品用的是Dapper对SqlLite进行ORM。然后接触公司授权系统后发现用的是EntityFramework对SQLSever进行ORM。授权系统里用的是DBFirst,增删查改使用Linq To Entity,觉得非常方便。本篇篇幅较短,老司机可直接略过

二、添加EF       

Step1:添加“新建项”,起个名称,添加ADO.NET实体数据模型;

Step2:选择模型类型,来自数据库的EF设计器;

Step3:选择数据连接,新建连接,选择要使用的数据库类型;默认SQLSever;

Step4:测试连接数据库;

Step5:选择EF版本;

Step6:选择要实体化的表,点击完成。

三、操作

       经过上述操作会产生三个文件:

1. EntityModel.Context.tt (上下文,所有class的DBSet集合都在这个文件下的.cs文件中)

2. EntityModel.tt       (每个表映射后的class都放在这个文件下面)

3. EntityModel.edmx (可视化的表设计器)

假设连接的数据库下有三个表:AgencyInfo,ContractInfo,CustomerInfo。那么EntityModel.tt下就会有三个对应的.cs文件:

//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------ using System;
using System.Collections.Generic; namespace HHH
{
public partial class AgencyInfo
{
public System.Guid ID { get; set; }
public string UnitName { get; set; }
public string Phone { get; set; }
public string Address { get; set; }
public string comments { get; set; }
public Nullable<System.DateTime> CreatTime { get; set; }
public Nullable<int> ShowFlag { get; set; }
} }
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------ using System;
using System.Collections.Generic; namespace HHH
{
public partial class ContractInfo
{
public System.Guid ID { get; set; }
public string Title { get; set; }
public string Comment { get; set; }
public Nullable<System.DateTime> CreateDate { get; set; }
} }
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------ using System;
using System.Collections.Generic; namespace HHH
{
public partial class CustomerInfo
{
public System.Guid ID { get; set; }
public string Name { get; set; }
public string ContactInfo { get; set; }
public string Address { get; set; }
public string Comments { get; set; }
public string Email { get; set; }
public string MobilePhone { get; set; }
public string province { get; set; }
public string City { get; set; }
public string Type { get; set; }
public Nullable<System.DateTime> CreateDate { get; set; }
} }

那么EntityModel.Context.tt是这样的:

//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------ using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure; namespace HHH
{
public partial class MyEntities: DbContext
{
public MyEntities()
: base("name=MyEntities")
{
} protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
} public DbSet<ContractInfo> ContractInfoes { get; set; }
public DbSet<CustomerInfo> CustomerInfoes { get; set; }
public DbSet<AgencyInfo> AgencyInfoes { get; set; } }
}

需要对表对象操作时,首先要:

private MyEntities dbContext = new MyEntities();

需要对哪个表操作,就dbContext.ContractInfoes或者dbContext.CustomerInfoes这样找到数据集合,然后用Linq去操作,最后别忘dbContext.SaveChanges()保存修改即可。

四、结尾

       明天再看看写点什么,保持学习进度,再过几天要去练车了

【EF】EntityFramework DBFirst的使用的更多相关文章

  1. .NET框架 - NETFramework + API + EF(DBFirst) + MYSQL

    .NET框架 - NETFramework + MVC+ EF(DBFirst) + MYSQL 1. 安装3个MYSQL插件 ①mysql-for-visualstudio-1.2.8    vs的 ...

  2. 个人 WPF+EF(DBFirst) 简单应用开发习惯及EF学习测试(备忘) -- 2

    接上篇:个人 WPF+EF(DBFirst) 简单应用开发习惯及EF学习测试(备忘) -- 1 Step1 在主程序中设置连接数据库 从Model类库的 App.Config 把数据库字符串拷贝出来, ...

  3. 2_MVC+EF+Autofac(dbfirst)轻型项目框架_用户权限验证

    前言 接上面两篇 0_MVC+EF+Autofac(dbfirst)轻型项目框架_基本框架 与 1_MVC+EF+Autofac(dbfirst)轻型项目框架_core层(以登陆为例) .在第一篇中介 ...

  4. 1_MVC+EF+Autofac(dbfirst)轻型项目框架_core层(以登陆为例)

    前言 在上一篇0_MVC+EF+Autofac(dbfirst)轻型项目框架_基本框架中,我已经介绍了这个轻型框架的层次结构,在下面的这篇文章中,我将以教师登陆功能为例,具体来扩充下我的core层的代 ...

  5. 0_MVC+EF+Autofac(dbfirst)轻型项目框架_基本框架

    前言 原来一直使用他人的开源项目框架,异常的定位会很麻烦,甚至不知道这个异常来自我的代码还是这个框架本身.他人的框架有一定的制约性,也有可能是我对那些框架并没深入了解,因为这些开源框架在网上也很难找到 ...

  6. EF(EntityFramework)与mysql使用,乱码问题

    1.中文乱码问题 利用ef更新数据到mysql数据库中,中文就会变成乱码"???",就算把mysql的数据库的编码设置为"utf8"也会变成乱码,从网上查询了下 ...

  7. EF(EntityFramework)与mysql使用,序列化问题[System.ObjectDisposedException]

    在EF 中使用mysql关联取数据时,如果当前实体中包含另一个实体的list成员,而这个成员为空的话,在json序列化的时候就会报错: '((System.Data.Entity.DynamicPro ...

  8. C#中 EF(EntityFramework) 性能优化

    现在工作中很少使用原生的sql了,大多数的时候都在使用EF.刚开始的时候,只是在注重功能的实现,最近一段时间在做服务端接口开发.开发的时候也是像之前一样,键盘噼里啪啦的一顿敲,接口秒秒钟上线,但是到联 ...

  9. EF(EntityFramework) Migrations 迁移

    1.开启程序包管理器控制台 2.安装EntityFramework PM> Install-Package EntityFramework   3.启用迁移 PM> Enable-Migr ...

随机推荐

  1. 小计Tomcat的调优思路

    描述 最近在补充自己的短板,刚好整理到Tomcat调优这块,基本上面试必问,于是就花了点时间去搜集一下tomcat调优 都调了些什么,先记录一下调优手段,更多详细的原理和实现以后用到时候再来补充记录, ...

  2. Python闭包相关问题

    闭包的概念一直是似懂非懂,看过了原理,却不知道怎么实际应用. 刚好看到Python的late binding问题,记录如下,以备后续增补. >>> def create_multip ...

  3. katalon系列十七:报告&Katalon Analytics

    一.邮件报告Suite执行完后,严格来说这个不算报告,只是邮件通知执行结果,具体设置请看katalon系列三 二.文件报告Suite执行完后,会在项目文件夹下/Report/Suite Name/ti ...

  4. JMeter与WireShark

    最近在学习JMeter,刚学了一点皮毛,就掉入了WireShark的坑,我发现在学习的道路上就是不断的给自己挖坑,之前在学习LoadRunner的道路上,遇到的坑更大,就单纯的安装LR就耗费了两个星期 ...

  5. JY播放器【网易云音乐破解下载】

    今天给大家带来一款神器----JY播放器.可以直接下载网易云音乐的歌曲. 目前已经支持平台(蜻蜓FM.喜马拉雅FM.网易云音乐.QQ音乐) 使用方法: 在电脑打开网易云音乐或者网站找到你要听的歌曲或歌 ...

  6. 概念这种东西--node.js

    概念是一个既简单又复杂.既招人爱又招人恨的东西.概念是对一事务或现象的抽象.抽象好了,那就太方便问题的解决了,抽象坏了,那就驴唇不对马嘴,反而会让逻辑一塌糊涂.现实中经常有这样的概念:东北人怎么怎么样 ...

  7. 【xml_Class、xmlElementNode_Class 类】使用说明

    xml_Class.xmlElementNode_Class这两个类是针对XML相关操作的类. 1.xml_Class类是针对XML文档操作的类 目录: 类型 原型 参数 返回 说明 Sub Sub ...

  8. Django 使用 Celery 实现异步任务

    对于网站来说,给用户一个较好的体验是很重要的事情,其中最重要的指标就是网站的浏览速度.因此服务端要从各个方面对网站性能进行优化,比如可采用CDN加载一些公共静态文件,如js和css:合并css或者js ...

  9. 常用的os操作方法

    os.sep可以取代操作系统特定的路径分隔符.windows下为 “”os.name字符串指示你正在使用的平台.比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix' ...

  10. Ubuntu系统升级内核方法

    一.查看内核版本 $ uname-sr //查看内核版本 二.去Ubuntu网站http://kernel.ubuntu.com/~kernel-ppa/mainline/下载所需版本的deb文件 w ...