2016-12-04 18 views
11

ASP.NET MVCコアとEntity Frameworkコアを使用してアプリケーションを構築しており、アプリケーションにはたくさんのクラスがあります。 Entity Frameworkの以前のバージョンでは、我々はクラス図のためのEDMXファイルを生成するため、このメソッドを使用します。EFコアのモデルからクラス図を生成する方法は?

void ExportMappings(DbContext context, string edmxFile) 
{ 
    var settings = new XmlWriterSettings { Indent = true }; 
    using (XmlWriter writer = XmlWriter.Create(edmxFile, settings)) 
    { 
     System.Data.Entity.Infrastructure.EdmxWriter.WriteEdmx(context, writer); 
    } 
} 

が、EFコアには、このような機能はありませんようです。 Entity Framework Coreでこれを行うための同等のバージョンがあるのだろうかと思います。

+1

私は図生成のために、この[リンク]に –

+0

ルック(http://stackoverflow.com/questions/18658078/how-do-you-create-a-visual-modelが備わっていません知っているように-of-entityframeworkは、コードファースト)、EFコア – Ali

+0

@AliAshooriかもしれませんので、我々は、.NETのコアが –

答えて

0

? Visual Studio Installerを使用してワークスペースに追加する必要があります。 Visual Studio 2017インストーラーで、コンポーネントリストから追加する必要があります。詳細についてはこちらの記事をご覧ください。 https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-community

+0

を待つ必要があります@Sergeいいえ、回避策を実行できます。標準の.netフレームワークコンソールアプリケーションを作成します。 .netコアプロジェクトからエンティティモデルへのリンクを追加します。クラスダイアグラムに追加して編集します。 – Serge

+0

を投影していますことはありません...私が思うEFCoreのnewersバージョンに – redwards510

0

This guy is onto something good!彼のナゲットパッケージEntityFrameworkCore.Diagrams1を追加するだけで、コンテキストの図を表示するコントローラ(/ db-diagram /)がWebサイトに作成されます。詳細とデモについては、his siteを参照してください。これは、netstandard 1.6 aka .Net Core 1.0プロジェクトのみに適用されます。ブー!

更新:または、.Net Core 2.0/EF Core 2.0でこれを使用して、クラスから.Dgmlファイルを作成することができます。それは少しバギーです。 Visual Studioマーケットプレイスなどを使用してインストールします。

https://github.com/ErikEJ/SqlCeToolbox/wiki/EF-Core-Power-Tools

これはあなたのdbcontextファイルからDGMLを作成するための拡張メソッドを追加するオプションがあります。私はそれを取ってインデックスページが生成されたこのコントローラを作成し、mysite.com/dgmlに行くとdgmlファイルを提供します。上記と同じ考え。 gist here

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Threading.Tasks; 
using Microsoft.AspNetCore.Http; 
using Microsoft.AspNetCore.Mvc; 
using Microsoft.EntityFrameworkCore; 

namespace OL.Web.AffiliateDb.Api.Controllers 
{ 
    [Route("Dgml")] 
    public class DgmlController : Controller 
    { 
     public SomeDbContext _context { get; } 


     public DgmlController(SomeDbContext context) 
     {    
      _context = context;      
     } 

     /// <summary> 
     /// Creates a DGML class diagram of most of the entities in the project wher you go to localhost/dgml 
     /// </summary> 
     /// <returns>a DGML class diagram</returns> 
     [HttpGet] 
     public IActionResult Get() 
     { 

      System.IO.File.WriteAllText(Directory.GetCurrentDirectory() + "\\Entities.dgml", 
       _context.AsDgml(), // https://github.com/ErikEJ/SqlCeToolbox/wiki/EF-Core-Power-Tools 
       System.Text.Encoding.UTF8); 

      var file = System.IO.File.OpenRead(Directory.GetCurrentDirectory() + "\\Entities.dgml"); 
      var response = File(file, "application/octet-stream", "Entities.dgml"); 
      return response; 
     } 
    } 
} 
+1

ありがとうございます!あなたはこれに対するアップデートとしてあなたの他の答えを加えることができますか?これはEF Core 1.0用であり、もう1つは2.0用です - 私はそれはそう言えると便利だと思います。 – aaron

+0

@aaron done、私もこれを探しています! 2番目の人はgithubで利用可能なdgmlを作成するコードを持っています。 – redwards510

関連する問題