Stiamo costruendo un'applicazione utilizzando ASP.NET MVC Core e Entity Framework Core e abbiamo l'intero gruppo di classi nella nostra applicazione. Nelle versioni precedenti di Entity Framework, utilizzeremmo questo metodo per generare un file edmx per il diagramma delle classi:
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);
}
}
ma sembra che non ci sia una funzione del genere in EF Core. Mi chiedo se esiste una versione equivalente per farlo in Entity Framework Core.
Questo ragazzo ha qualcosa di buono ! Devi solo aggiungere il suo pacchetto EntityFrameworkCore.Diagrams
1 e crea un controller (/ db-diagram /) nel tuo sito Web che mostra un diagramma del tuo contesto. Vedi il suo sito per i dettagli e una demo. Questo è solo per i progetti netstandard 1.6 aka .Net Core 1.0. Boo!
Aggiornamento: in alternativa puoi utilizzarlo per .Net Core 2.0 / EF Core 2.0 per creare file .Dgml dalle classi. È un piccolo passeggino. Installalo usando il marketplace di Visual Studio o altro.
https://github.com/ErikEJ/SqlCeToolbox/wiki/EF-Core-Power-Tools
Questo ha un'opzione per aggiungere un metodo di estensione per creare un DGML dal tuo file dbcontext. L'ho preso e ho creato questo controller dove viene generata la pagina dell'indice e quindi ti serve il file dgml quando vai su mysite.com/dgml. La stessa idea di quella sopra. qui
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;
}
}
}