上一篇 第二篇:Entity Framework CodeFirst & Model 映射 主要介绍以Fluent API来实作EntityFramework CodeFirst,得到了大家一些支持,其中就有一位同学就提出。熟悉了EntityFramework CodeFirst 原理,就可以用微软的工具来生产代码。是的,今天就来讲一下,由微软EntityFramework小组开发的为EntityFramework CodeFirst Visual Studio小插件 “Entity Framework Power Tools”.

Entity Framework Power Tools 现在Bate4 版,估计也不会更新,因为现在紧锣密鼓的 开发Entity Framework 7。不过没有关系,Bate4 已经很稳定了,很能够解决Fluent API 繁琐的Model,Mapping 创建的工作。是一款很不错生产力工具,下面就听我慢慢的讲怎么用咯。

一. Entity Framework Power Tools Bate4 安装

1. 打开Visual Studio 2013 ,选择 工具 菜单,再选择 扩展和更新。

2. 选择左边菜单的联机——在右上的搜索栏中输入 power tool ,在搜索结果中找到,Entity Framework Power Tools Bate4 下载安装,然后重启。

如果家里网速不行,搜索 转了半天 也不出来的话,我这里也提供独立安装包 下载 :http://files.cnblogs.com/files/davidzhou/EFPowerTools.zip 解压安装即可。

二. Entity Framework Power Tools 的使用

1. 重新打开 Visual Studio 2013 ,新建 “EntityFrameworkPowerToolsSample” 解决方案,然后添加“EntityFrameworkPowerTools.Models” 类库项目。

2. 右击 “EntityFrameworkPowerTools.Models” 类库项目,会多出来一个“Entity Framework” 菜单

选择 “Entity Framework” 菜单下的“Reverse Engineer Code First” 选项,会弹出 数据库 连接属性界面,配置你要连接的数据库服务器,数据库。

我这里配置的是,我本机的 “EntityFrameworkSample” 数据库。

点击 “确定” 不出意外就会产生Entity Framework CodeFirst 相关的代码。如果没有安装Entity Framework,在生成之前会自动给安装。

3. 生成代码如下

Sample_Order (数据模型)

using System;
using System.Collections.Generic; namespace EntityFrameworkPowerTools.Models.Models
{
public partial class Sample_Order
{
public System.Guid OrderGuid { get; set; }
public string OrderNo { get; set; }
public string OrderCreator { get; set; }
public System.DateTime OrderDateTime { get; set; }
public string OrderStatus { get; set; }
public string Description { get; set; }
public string Creator { get; set; }
public System.DateTime CreateDateTime { get; set; }
public string LastModifier { get; set; }
public Nullable<System.DateTime> LastModifiedDateTime { get; set; }
}
}

Sample_OrderMap (映射配置)

using System.Data.Entity.ModelConfiguration;

namespace EntityFrameworkPowerTools.Models.Models.Mapping
{
public class Sample_OrderMap : EntityTypeConfiguration<Sample_Order>
{
public Sample_OrderMap()
{
// Primary Key
this.HasKey(t => t.OrderGuid); // Properties
this.Property(t => t.OrderNo)
.IsRequired()
.HasMaxLength(); this.Property(t => t.OrderCreator)
.IsRequired()
.HasMaxLength(); this.Property(t => t.OrderStatus)
.IsRequired()
.HasMaxLength(); this.Property(t => t.Description)
.HasMaxLength(); this.Property(t => t.Creator)
.IsRequired()
.HasMaxLength(); this.Property(t => t.LastModifier)
.HasMaxLength(); // Table & Column Mappings
this.ToTable("Sample_Order");
this.Property(t => t.OrderGuid).HasColumnName("OrderGuid");
this.Property(t => t.OrderNo).HasColumnName("OrderNo");
this.Property(t => t.OrderCreator).HasColumnName("OrderCreator");
this.Property(t => t.OrderDateTime).HasColumnName("OrderDateTime");
this.Property(t => t.OrderStatus).HasColumnName("OrderStatus");
this.Property(t => t.Description).HasColumnName("Description");
this.Property(t => t.Creator).HasColumnName("Creator");
this.Property(t => t.CreateDateTime).HasColumnName("CreateDateTime");
this.Property(t => t.LastModifier).HasColumnName("LastModifier");
this.Property(t => t.LastModifiedDateTime).HasColumnName("LastModifiedDateTime");
}
}
}

EntityFrameworkSampleContext (DbContext)

using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using EntityFrameworkPowerTools.Models.Models.Mapping; namespace EntityFrameworkPowerTools.Models.Models
{
public partial class EntityFrameworkSampleContext : DbContext
{
static EntityFrameworkSampleContext()
{
Database.SetInitializer<EntityFrameworkSampleContext>(null);
} public EntityFrameworkSampleContext()
: base("Name=EntityFrameworkSampleContext")
{
} public DbSet<Sample_Order> Sample_Order { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new Sample_OrderMap());
}
}
}

怎么样是不是代码,跟上一篇,代码差不多啊。只是文件的名称不同而已,如果想调整项目结构,像上一篇一样,你可以把 EntityFramework Power Tools 生产代码拷贝过去,稍作调整就可以了。

当然EntityFramework Power Tools 还可以自定义模板,跟自己写T4模板一样,来实现自己想要规则。我这里就不再做详细讲解了,大家自己摸索一下。

然后本篇的源代码 : http://pan.baidu.com/s/1c2K4R8s

第三篇:Entity Framework CodeFirst & Model 映射 续篇 EntityFramework Power Tools 工具使用的更多相关文章

  1. 第二篇:Entity Framework CodeFirst & Model 映射

    前一篇 第一篇:Entity Framework 简介 我有讲到,ORM 最关键的 Mapping,也提到了最早实现Mapping的技术,就是 特性 + 反射,那Entity Framework 实现 ...

  2. 第三篇 Entity Framework Plus 之 Query Cache

    离上一篇博客,快一周,工作太忙,只能利用休息日来写一些跟大家分享,Entity Framework Plus 组件系列文章,之前已经写过两篇 第一篇 Entity Framework Plus 之 A ...

  3. entity framework codefirst 用户代码未处理DataException,InnerException基础提供程序在open上失败,数据库生成失败

    警告:这是一个入门级日志,如果你很了解CodeFirst,那请绕道 背景:这篇日志记录我使用Entity FrameWork CodeFirst时出现的错误和解决问题的过程,虽然有点曲折……勿喷 备注 ...

  4. Entity Framework CodeFirst数据迁移

    前言 紧接着前面一篇博文Entity Framework CodeFirst尝试. 我们知道无论是“Database First”还是“Model First”当模型发生改变了都可以通过Visual ...

  5. 第二篇 Entity Framework Plus 之 Query Future

    从性能的角度出发,能够减少 增,删,改,查,跟数据库打交道次数,肯定是对性能会有所提升的(这里单纯是数据库部分). 今天主要怎样减少Entity Framework查询跟数据库打交道的次数,来提高查询 ...

  6. Entity Framework Code-First(20):Migration

    Migration in Code-First: Entity framework Code-First had different database initialization strategie ...

  7. How to: Supply Initial Data for the Entity Framework Data Model 如何:为EF数据模型提供初始数据

    After you have introduced a data model, you may need to have the application populate the database w ...

  8. ADO.NET Entity Framework CodeFirst 如何输出日志(EF 5.0)

    ADO.NET Entity Framework CodeFirst 如何输出日志(EF4.3) 用的EFProviderWrappers ,这个组件好久没有更新了,对于SQL执行日志的解决方案的需求 ...

  9. Entity Framework : The model backing the '' context has changed since the database was created

    1.采用code first 做项目时,数据库已经生成,后期修改数据库表结构.再次运行时出现一下问题: Entity Framework : The model backing the '' cont ...

随机推荐

  1. ecshop验证码

    <?php //仿制ecshop验证码(四位大写字母和数字.背景) //处理码值(四位大写字母和数字组成) //所有的可能的字符集合 $chars = 'ABCDEFGHIJKLMNOPQRST ...

  2. 非技术1-学期总结&ending 2016

    好久好久没写博客了,感觉动力都不足了--12月只发了一篇博客,好惭愧-- 今天是2016年最后一天,怎么能不写点东西呢!! 学期总结 大学中最关键一年的第一个学期,共4个月.前20天在学网络方面的,当 ...

  3. PLSql Oracle配置

    1.安装Oracle客户端或者服务端 2.配置环境变量 <1>.一般如果安装了Oracle客户端或者服务端的话,在环境变种的Path中有Oracle的安装路径(计算机-属性-高级系统设置- ...

  4. linux下安装Redis以及phpredis模块

    一:redis的安装 1. 首先上官网下载Redis 压缩包,地址:http://redis.io/download 下载 2. 通过远程管理工具,将压缩包拷贝到Linux服务器中,执行解压操作 3. ...

  5. PHP5.4~7.1新特性总结

    http://note.youdao.com/noteshare?id=7273b858fc12873ad092979e4ba173a7&sub=WEB334fdcf50b507ad93549 ...

  6. js中的null 和undefined

    参考链接:http://blog.csdn.net/qq_26676207/article/details/53100912 http://www.ruanyifeng.com/blog/2014/0 ...

  7. CentOS 6.3下 安装 Mono 3.2 和Jexus 5.4

    最新更新参看: Centos 7.0 安装Mono 3.4 和 Jexus 5.6 2012年初写过一篇<32和64位的CentOS 6.0下 安装 Mono 2.10.8 和Jexus 5.0 ...

  8. 巧用location.hash保存页面状态

    在我们的项目中,有大量ajax查询表单+结果列表的页面,由于查询结果是ajax返回的,当用户点击列表的某一项进入详情页之后,再点击浏览器回退按钮返回ajax查询页面,这时大家都知道查询页面的表单和结果 ...

  9. 探索c#之Async、Await剖析

    阅读目录: 基本介绍 基本原理剖析 内部实现剖析 重点注意的地方 总结 基本介绍 Async.Await是net4.x新增的异步编程方式,其目的是为了简化异步程序编写,和之前APM方式简单对比如下. ...

  10. 企业IT管理员IE11升级指南【16】—— 使用Compat Inspector快速定位IE兼容性问题

    企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...