45

यदि आप here देखते हैं तो आप देखेंगे कि यह व्यक्ति एंटिटी मॉडल आरेख दिखा रहा है, मैं जानना चाहता हूं कि मैं अपने एंटिटी फ्रेमवर्क कोड प्रथम कक्षाओं से एक इकाई मॉडल आरेख कैसे बना सकता हूं ।आप एंटीटीफ्रेमवर्क कोड का पहला मॉडल कैसे बनाते हैं

यह याद रखने की कोशिश कर रहा है कि कोड को देखकर सबकुछ एक साथ कैसे जुड़ता है।

+0

नहीं मिला एक पृष्ठ है कि ... यह इकाई डाटा मॉडल ब्राउज़र है, मैं पता नहीं है कि यह कैसे प्राप्त करने के लिए, और –

+0

कुछ इस [ADO.NET इकाई डाटा की तरह मेरे वर्गों से एक मॉडल के निर्माण के लिए है मॉडल डिजाइनर] (http://msdn.microsoft.com/en-us/library/vstudio/cc716685 (v = vs.100) .aspx)? – johnnynotsolucky

+0

हाँ वह बात –

उत्तर

47

Entity Frameworks Power Tools स्थापित के साथ आप अपने समाधान दृश्य में संदर्भ पर राइट-क्लिक कर सकते हैं, "इकाई फ्रेमवर्क" पर क्लिक करें, फिर "इकाई डेटा मॉडल देखें" का चयन करें।

यह आपके वर्गों से एक साफ आरेख तैयार करेगा।

+0

बनाने में सक्षम हो सकें, वही था जो मैं ढूंढ रहा था, नाम को याद नहीं कर सका! –

+0

लिंक वीएस एक्सप्रेस संस्करण –

+2

के लिए काम नहीं किया दुर्भाग्यवश यह एक्सटेंशन अब VS2015 में समर्थित नहीं है। :( – Efrain

42

एक इकाई डेटा मॉडल आरेख एक ईडीएमएक्स फ़ाइल का दृश्य दृश्य है।

using System.Data.Entity.Infrastructure; // namespace for the EdmxWriter class 

using (var ctx = new MyContext()) 
{ 
    using (var writer = new XmlTextWriter(@"c:\Model.edmx", Encoding.Default)) 
    { 
     EdmxWriter.WriteEdmx(ctx, writer); 
    } 
} 

इस कोड को एक फ़ाइल Model.edmx है कि आप दृश्य स्टूडियो में खोल सकते हैं बनाता है: आदेश में एक कोड-सबसे पहले मॉडल से इस तरह के एक चित्र आप इसे से एक edmx फ़ाइल बनाना चाहिए प्राप्त करने के लिए। यह मॉडल आरेख प्रदर्शित करेगा। ईडीएमएक्स फ़ाइल आपके वर्तमान कोड-फर्स्ट मॉडल का एक स्नैपशॉट है। जब आप कोड में मॉडल बदलते हैं तो आपको आरेख में उन परिवर्तनों को दर्शाने के लिए एक नई EDMX फ़ाइल बनाना होगा।

+1

सरल और साफ! इकाई फ्रेमवर्क पावर टूल्स मेरी पहली पसंद होगी, लेकिन वे जटिल परियोजनाओं के लिए उपयोग करने में दर्दनाक हैं। – StefanG

+0

बढ़िया, बहुत बहुत धन्यवाद! – CallMeBob

+0

विजुअल स्टूडियो को व्यवस्थापक के रूप में चलाने के लिए मत भूलना ताकि आप .edmx फ़ाइल – ehsan88

4

स्लामा के जवाब के अलावा।

 string sPath = @"c:\Development\{0}"; 
     try 
     { 
      File.Copy(String.Format(sPath, "Model.edmx"), String.Format(sPath, "ModelTemplate.edmx")); 
      File.Delete(String.Format(sPath, "Model.edmx")); 
     } 
     catch (Exception) 
     { 

      //no worry, file not found issues 
     } 

     using (var ctx = new ShopID.Models.ShopIDDb()) 
     { 
      using (var writer = new XmlTextWriter(String.Format(sPath, "Model.edmx"), Encoding.Default)) 
      { 
       EdmxWriter.WriteEdmx(ctx, writer); 
      } 
     } 

     XmlDocument oldModel = new XmlDocument(); 
     oldModel.Load(String.Format(sPath, "ModelTemplate.edmx")); 
     XmlDocument newModel = new XmlDocument(); 
     newModel.Load(String.Format(sPath, "Model.edmx")); 

     var nsmgr = new XmlNamespaceManager(newModel.NameTable); 
     nsmgr.AddNamespace("diagram", "http://schemas.microsoft.com/ado/2009/11/edmx"); 
     XmlNode node = oldModel.SelectSingleNode("//diagram:Diagrams", nsmgr).ChildNodes[0]; 
     XmlNode newNode = newModel.SelectSingleNode("//diagram:Diagrams", nsmgr); 
     XmlNode importNode = newNode.OwnerDocument.ImportNode(node, true); 
     newModel.ImportNode(importNode, true); 
     newNode.AppendChild(importNode); 
     newModel.Save(String.Format(sPath, "Model.edmx")); 
     File.Delete(String.Format(sPath, "ModelTemplate.edmx")); 

: यदि आप चित्र के लेआउट समायोजित करने के लिए सक्षम होने के लिए चाहते हैं और आप निर्माण के बाद यह हर बार फिर से फिर से करना चाहते हैं, तो आप नए edmx फ़ाइल में फ़ाइल पहले से edmx से आरेख नोड कॉपी कर सकते हैं // अद्यतन मॉडल विजुअल स्टूडियो

+0

इसे थोड़ा सा इस्तेमाल किया गया और फिर एहसास हुआ कि मॉडल में जोड़े गए किसी भी संस्था/संघ को अपडेट किए गए एक में नहीं खींचा जाता है, क्योंकि संबंधित आरेख नोड्स गायब हैं। यहां मैं अब क्या कर रहा हूं: – Ian

0

पिछले ईएफ पावर टूल्स जनरेटेड आरेख से लेआउट को बनाए रखने के लिए तैयार होने के लिए तैयार है, यह संस्थाओं की स्थिति और रंग इत्यादि को ले जाएगा जो नए में मौजूद हैं, और कोई भी अतिरिक्त छोड़ दें जैसा है। अन्यथा आप आरेख में नई इकाइयां नहीं देखते हैं।

static void CopyLayout(string srcFile, string destFile) 
    { 
     var oldModel = XDocument.Load(srcFile); 
     var newModel = XDocument.Load(destFile); 

     XNamespace edmxNs = "http://schemas.microsoft.com/ado/2009/11/edmx"; 
     // find all entity shapes 
     var oldEts = oldModel.Root.Descendants(edmxNs + "EntityTypeShape").Select(ets => ets).ToList(); 
     var newEts = newModel.Root.Descendants(edmxNs + "EntityTypeShape").Select(ets => ets).ToList(); 
     // replace any matching new with old 
     foreach (var newEt in newEts) 
     { 
      var match = oldEts.SingleOrDefault(ot => ot.Attribute(@"EntityType").Value == 
                newEt.Attribute(@"EntityType").Value); 
      if (match != null) 
       newEt.ReplaceAttributes(match.Attributes()); 
     } 
     newModel.Save(destFile); 
    } 
संबंधित मुद्दे