2016-12-04 27 views
11

ASP.NET MVC Core ve Entity Framework Core kullanarak bir uygulama oluşturuyoruz ve uygulamamızdaki tüm sınıf gruplarına sahibiz.EF Core modellerinden sınıf şeması nasıl oluşturulur?

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); 
    } 
} 

ama EF Çekirdek böyle bir özellik yok gibi görünmektedir: Varlık Framework önceki sürümlerinde, biz sınıf diyagramı için bir edmx dosyası oluşturmak için bu yöntemi kullanmak. Entity Framework Core'da bunu yapmak için eşdeğer bir sürüm olup olmadığını merak ediyorum.

+1

Ben diyagram nesil için bu [link] içine –

+0

bak (http://stackoverflow.com/questions/18658078/how-do-you-create-a-visual-model orada özelliği değildir bildiği gibi -en-entityframework-code-first), yararlı olabilir – Ali

+0

@AliAshoori Bu EF Çekirdek –

cevap

0

Neden yerine Visual Studio Sınıf Tasarımcısını kullanmak? , Visual Studio Yükleyici ile çalışma alanınıza eklemeniz gerekir. Visual Studio 2017 yükleyicide onu bileşen listesinden eklemeniz gerekir. https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-community

+0

, bu özellik .NET Core projelerine sahip değil – Serge

+0

@Serge Hayır, ancak bir çözüm yapabilirsiniz. Standart bir .net framework konsol uygulaması oluşturun. .net çekirdek projenizden varlık modellerine bağlantı ekleyin. Şimdi bunları sınıf şemasına ekleyin ve düzenleyin. – redwards510

0

This guy is onto something good fazla bilgi için bu makaleye bakın! Sadece kendi nuget paketini EntityFrameworkCore.Diagrams1 ekleyin ve web sitenizde içeriğinizin bir şemasını gösteren bir denetleyici (/ db-diagram /) yaratır. Detaylar ve demo için bkz. his site. Bu sadece netstandard 1.6 aka .Net Core 1.0 projeleri içindir. Çok kötü!

Güncelleme: Alternatif Net Çekirdek 2.0 için kullanabilirsiniz/EF Çekirdek 2.0 sınıflardan .Dgml dosyaları oluşturmak için. Bu küçük bir araba. Visual Studio pazarını veya herhangi bir şeyi kullanarak yükleyin.

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

Bu

sizin DBContext dosyasından bir DGML oluşturmak için bir uzantısı yöntemi eklemek için bir seçenek vardır. Bunu aldım ve bu denetleyiciyi, dizin sayfasının oluşturulduğu yerde oluşturdu ve mysite.com/dgml adresine gittiğinizde dgml dosyasını size sunuyor. Yukarıdaki ile aynı fikir. 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

Bunun için teşekkürler! Diğer cevabınızı buna bir güncelleme olarak ekleyebilir misiniz? Bu EF Core 1.0 ve diğeri 2.0 içindir - Bence bunu söylemek yardımcı olur. – aaron

+0

@aaron done, Bunun için de avlanıyorum! Ikinci adam github üzerinde mevcut dgmls oluşturmak için onun kodu vardır. – redwards510