第三篇:Entity Framework CodeFirst & Model 映射 续篇 EntityFramework Power Tools 工具使用

上一篇 第二篇: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(30);

            this.Property(t => t.OrderCreator)
                .IsRequired()
                .HasMaxLength(20);

            this.Property(t => t.OrderStatus)
                .IsRequired()
                .HasMaxLength(30);

            this.Property(t => t.Description)
                .HasMaxLength(1000);

            this.Property(t => t.Creator)
                .IsRequired()
                .HasMaxLength(20);

            this.Property(t => t.LastModifier)
                .HasMaxLength(20);

            // 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

时间: 2024-10-09 19:52:24

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

第二篇:Entity Framework CodeFirst &amp; Model 映射

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 前一篇 第一篇:Entity Framework 简介 我有讲到,ORM 最关键的 Mapping,也提到了最早实现Mapping的技术,就是 特性 + 反射,那Entity Framework 实现Mapping 又是怎样的呢? Entity

第二篇 Entity Framework Plus 之 Query Future

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 从性能的角度出发,能够减少 增,删,改,查,跟数据库打交道次数,肯定是对性能会有所提升的(这里单纯是数据库部分). 今天主要怎样减少Entity Framework查询跟数据库打交道的次数,来提高查询性能. 举一个大家最常用功能 "分页&quo

Entity Framework Code-First(20):Migration

Migration in Code-First: Entity framework Code-First had different database initialization strategies prior to EF 4.3 like CreateDatabaseIfNotExists, DropCreateDatabaseIfModelChanges, or DropCreateDatabaseAlways. However, there were some problems wit

Entity Framework : The model backing the &#39;&#39; context has changed since the database was created

1.采用code first 做项目时,数据库已经生成,后期修改数据库表结构.再次运行时出现一下问题: Entity Framework : The model backing the 'ProductModel' context has changed since the database was create 解决方法: 1.打开当前项目中的:程序包管理器控制台 2.输入:enable-migrations -ProjectName 'ProductModel' -Force 解释:'Pro

[转]Creating an Entity Framework Data Model for an ASP.NET MVC Application (1 of 10)

本文转自:http://www.asp.net/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application Creating an Entity Framework Data Model for an ASP.NET MVC Application (1 of 10) By      

第一篇 Entity Framework Plus 之 Audit

一般系统会有登陆日志,操作日志,异常日志,已经满足大部分的需求了.但是有时候,还是需要Audit 审计日志,审计日志,主要针对数据增,改,删操作数据变化的记录,主要是对数据变化的一个追踪过程.其中主要追踪数据关键点如下 1. 新增 具体新增哪些数据,值是什么,新增人谁. 2. 修改 具体修改哪些数据,之前值是什么,修改后值是什么,修改人谁. 3. 删除 具体删除哪些数据,之前值是什么,删除人谁. 有了这个Audit追踪过程,当那天,用户操作的数据出现问题,你就可以根据这个Audit将数据恢复到某

.NET基础篇——Entity Framework 数据转换层通用类

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 在实现基础的三层开发的时候,大家时常会在数据层对每个实体进行CRUD的操作,其中存在相当多的重复代码.为了减少重复代码的出现,通常都会定义一个共用类,实现相似的操作,下面为大家介绍一下Entity Framework时常用到的通用类.首先在数据

Entity Framework Code First 映射继承关系

转载 http://www.th7.cn/Program/net/201301/122153.shtml Code First如何处理类之间的继承关系.Entity Framework Code First有三种处理类之间继承关系的方法,我们将逐一介绍这三种处理方法. 1.Table Per Hierarchy(TPH): 只建立一个表,把基类和子类中的所有属性都映射为表中的列. 2.Table Per Type(TPT): 为基类和每个子类建立一个表,每个与子类对应的表中只包含子类特有的属性对

在Entity Framework 4中映射现有实体类(POCO)

Entity Framework的全称是ADO.NET Entity Framework,是微软开发的基于ADO.NET的ORM(Object/Relational Mapping)框架. Entity Framework的主要特点: 1. 支持多种数据库(Microsoft SQL Server, Oracle, and DB2): 2. 强劲的映射引擎,能很好地支持存储过程: 3. 提供Visual Studio集成工具,进行可视化操作: 4. 能够与ASP.NET, WPF, WCF, W