2016-12-04 52 views
11

我們正在構建一個使用ASP.NET MVC核心和實體框架核心的應用程序,我們在應用程序中有大量的類。在實體框架的早期版本中,我們將使用這種方法生成的類圖的EDMX文件:如何從EF Core中的模型生成類圖?

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碼優先),可能會有所幫助 – Ali

+0

@AliAshoori這是不是EF核心 –

回答

0

爲什麼不使用Visual Studio類設計呢? 您需要使用Visual Studio安裝程序將其添加到您的工作區。在Visual Studio 2017安裝程序中,您需要從組件列表中添加它。看到這篇文章的更多信息 https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-community

+0

不具有該功能的.NET核心項目 – Serge

+0

@Serge否,但您可以執行解決方法。創建一個標準的.NET框架控制檯應用程序。從.net核心項目中添加鏈接到您的實體模型。現在將它們添加到類圖並編輯。 – redwards510

0

This guy is onto something good!您只需添加他的nuget包EntityFrameworkCore.Diagrams1,並在您的網站中創建一個控制器(/ db-diagram /),以顯示您的上下文的圖表。有關詳細信息和演示,請參閱his site。這僅適用於netstandard 1.6或.Net Core 1.0項目。噓!

更新:或者,您可以使用.Net Core 2.0/EF Core 2.0從類中創建.Dgml文件。這是一個小小的車。使用Visual Studio marketplace或其他來安裝它。

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,另一個是2.0 - 我認爲這樣說很有幫助。 – aaron

+0

@aaron完成了,我也在尋找這個!第二個人有他的代碼創建dgmls在github上可用.. – redwards510

相關問題