第三篇: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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM