Comment créez-vous un modèle visuel du code EntityFramework en premier

Si vous regardez ici, vous remarquerez que ce type affiche les diagrammes de modèle d’entité. Je voudrais savoir comment créer un diagramme de modèle d’entité à partir des premières classes de mon code EntityFramework.

Cela devient frustrant d’essayer de se rappeler comment tout est lié, simplement en regardant le code.

Avec les outils élecsortingques Entity Frameworks installés, vous pouvez cliquer avec le bouton droit sur le contexte dans la vue de votre solution, cliquer sur «Entity Framework», puis sélectionner «Afficher le modèle de données d’entité».

Cela va créer un diagramme soigné de vos classes.

Un diagramme de modèle de données d’entité est juste un affichage visuel d’un fichier EDMX. Pour obtenir un tel diagramme d’un modèle Code-First, vous devez créer un fichier EDMX à partir de celui-ci:

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

Ce code crée un fichier Model.edmx que vous pouvez ouvrir dans Visual Studio. Il affichera le diagramme du modèle. Le fichier EDMX est un instantané de votre modèle Code-First actuel. Lorsque vous modifiez le modèle dans le code, vous devez créer un nouveau fichier EDMX pour refléter ces modifications dans le diagramme.

En plus de Slauma, sa réponse. Si vous voulez pouvoir ajuster la disposition du diagramme et que vous ne voulez pas le refaire à chaque fois après la création, vous pouvez copier le noeud Diagram du fichier EDMX précédent dans le nouveau fichier EDMX:

  ssortingng sPath = @"c:\Development\{0}"; try { File.Copy(Ssortingng.Format(sPath, "Model.edmx"), Ssortingng.Format(sPath, "ModelTemplate.edmx")); File.Delete(Ssortingng.Format(sPath, "Model.edmx")); } catch (Exception) { //no worry, file not found issues } using (var ctx = new ShopID.Models.ShopIDDb()) { using (var writer = new XmlTextWriter(Ssortingng.Format(sPath, "Model.edmx"), Encoding.Default)) { EdmxWriter.WriteEdmx(ctx, writer); } } XmlDocument oldModel = new XmlDocument(); oldModel.Load(Ssortingng.Format(sPath, "ModelTemplate.edmx")); XmlDocument newModel = new XmlDocument(); newModel.Load(Ssortingng.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(Ssortingng.Format(sPath, "Model.edmx")); File.Delete(Ssortingng.Format(sPath, "ModelTemplate.edmx")); 

// Le modèle mis à jour est prêt à être ouvert avec Visual Studio

Pour conserver la mise en page d’un diagramme précédent généré par EF Power Tools, cette opération reportera les positions et les couleurs des entités, etc., présentes dans le nouveau, et laissera les ajouts tels quels. Sinon, vous ne voyez pas les nouvelles entités dans le diagramme.

  static void CopyLayout(ssortingng srcFile, ssortingng 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.Atsortingbute(@"EntityType").Value == newEt.Atsortingbute(@"EntityType").Value); if (match != null) newEt.ReplaceAtsortingbutes(match.Atsortingbutes()); } newModel.Save(destFile); }