2016-12-04 10 views
11

हम एएसपी.नेट एमवीसी कोर और एंटिटी फ्रेमवर्क कोर का उपयोग कर एक एप्लीकेशन बना रहे हैं और हमारे पास हमारे आवेदन में कक्षाओं का पूरा समूह है। इकाई की रूपरेखा के पिछले संस्करणों में, हम वर्ग रेखाचित्र के लिए एक 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); 
    } 
} 

लेकिन ऐसा लगता है एफई कोर में ऐसी कोई सुविधा नहीं है कि। मुझे आश्चर्य है कि एंटीटी फ्रेमवर्क कोर में ऐसा करने के लिए समकक्ष संस्करण है या नहीं।

+1

मैं जानता हूँ कि वहाँ के रूप में चित्र पीढ़ी के लिए सुविधा नहीं है में इस [कड़ी] –

+0

देखो (http://stackoverflow.com/questions/18658078/how-do-you-create-a-visual-model -of-entityframework-code-first), उपयोगी हो सकता है – Ali

+0

@AliAshoori यह ईएफ कोर –

उत्तर

1

ऐसा लगता है कि ईएफ कोर में वर्तमान में यह सुविधा नहीं है, यहां ईएफ 6 और ईएफसीओआर के बीच एक सुविधा तुलना है।

https://docs.microsoft.com/en-us/ef/efcore-and-ef6/features

+0

ठीक नहीं है, इसलिए हमें EFCore के नए संस्करणों का इंतजार करना होगा ... – webo80

0

नहीं क्यों बजाय दृश्य स्टूडियो क्लास डिज़ाइनर का उपयोग करें? आपको इसे विजुअल स्टूडियो इंस्टॉलर के साथ अपने वर्कस्पेस में जोड़ने की आवश्यकता है। विजुअल स्टूडियो 2017 इंस्टॉलर पर आपको इसे घटक सूची से जोड़ना होगा। अधिक जानकारी के लिए यह आलेख देखें https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-community

+0

में यह सुविधा नहीं है .NET कोर प्रोजेक्ट – Serge

+0

@ सर्ज नंबर, लेकिन आप एक कामकाज कर सकते हैं। मानक .net फ्रेमवर्क कंसोल ऐप बनाएं। अपने .net कोर प्रोजेक्ट से अपने इकाई मॉडल के लिंक में जोड़ें। अब उन्हें कक्षा आरेख में जोड़ें और संपादित करें। – redwards510

0

This guy is onto something good! आप बस अपना नुजेट पैकेज EntityFrameworkCore.Diagrams1 जोड़ें और यह आपकी वेबसाइट में एक नियंत्रक (/ डीबी-आरेख /) बनाता है जो आपके संदर्भ का आरेख दिखाता है। विवरण और डेमो के लिए his site देखें। यह केवल netstandard 1.6 उर्फ ​​.Net कोर 1.0 परियोजनाओं के लिए है। बू!

अद्यतन: वैकल्पिक रूप से आप कक्षाओं से डीजीएमएल फाइल बनाने के लिए .NET Core 2.0/EF Core 2.0 के लिए इसका उपयोग कर सकते हैं। यह एक छोटी छोटी गाड़ी है। विजुअल स्टूडियो मार्केटप्लेस या जो कुछ भी इस्तेमाल कर इसे इंस्टॉल करें।

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

यह आपके dbcontext फ़ाइल से एक DGML बनाने के लिए एक विस्तार विधि जोड़ने का विकल्प होता है। मैंने इसे लिया और इस नियंत्रक को बनाया जहां इंडेक्स पेज उत्पन्न होता है और फिर जब आप mysite.com/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

इसके लिए धन्यवाद! क्या आप अपना दूसरा उत्तर इस के अपडेट के रूप में जोड़ सकते हैं? यह ईएफ कोर 1.0 के लिए है और दूसरा 2.0 के लिए है - मुझे लगता है कि ऐसा कहना उपयोगी है। – aaron

+0

@ हारून किया, मैं भी इसके लिए शिकार कर रहा हूं! दूसरे लड़के के पास जिथूब पर उपलब्ध डीजीएमएल बनाने के लिए उसका कोड है .. – redwards510

संबंधित मुद्दे