Ответ 1
Похоже, что ядро EF не имеет этой функции в настоящее время, вот сравнение функций между EF6 и EFCore.
Мы создаем приложение с использованием ASP.NET MVC Core и Entity Framework Core, и у нас есть целая группа классов в нашем приложении. В предыдущих версиях Entity Framework мы использовали бы этот метод для создания файла edmx для диаграммы классов:
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 Core такой функции нет. Интересно, есть ли эквивалентная версия для этого в Entity Framework Core.
Похоже, что ядро EF не имеет этой функции в настоящее время, вот сравнение функций между EF6 и EFCore.
Почему бы не использовать Visual Studio Class Designer вместо этого? вам нужно добавить его в рабочее пространство с помощью установщика Visual Studio. В инсталляторе Visual Studio 2017 вам необходимо добавить его из списка компонентов. см. эту статью для получения дополнительной информации https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-community
Этот парень на что-то хорошее! Вы просто добавляете его пакет nuget EntityFrameworkCore.Diagrams
1 и он создает на вашем веб-сайте контроллер (/db-diagram/), который отображает диаграмму ваш контекст. См. его сайт для получения подробной информации и демонстрации. Это касается только проектов netstandard 1.6.Net Core 1.0. Boo!
Обновление. В качестве альтернативы вы можете использовать это для. Core Core 2.0/EF Core 2.0 для создания файлов .Dgml из классов. Это немного багги. Установите его на рынок Visual Studio или что-то еще.
https://github.com/ErikEJ/SqlCeToolbox/wiki/EF-Core-Power-Tools
У этого есть возможность добавить метод расширения для создания DGML из вашего файла dbcontext. Я взял это и создал этот контроллер, где генерируется индексная страница, а затем служит вам в файле dgml при переходе на mysite.com/dgml. Та же идея, что и выше. gist здесь
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;
}
}
}