Skip to content

Latest commit

 

History

History
109 lines (90 loc) · 9.38 KB

VSMarketplace blurb.md

File metadata and controls

109 lines (90 loc) · 9.38 KB

This Visual Studio 2019 extension is an opinionated code generator, adding a new file type (.efmodel) that allows for fast, easy and, most importantly, visual design of persistent classes. Inheritance, unidirectional and bidirectional associations are all supported. Enumerations are also included in the visual model, as is the ability to add text blocks to explain potentially arcane parts of your design.

While giving you complete control over how the code is generated you'll be able to create, out of the box, sophisticated, consistent and correct Entity Framework code that can be regenerated when your model changes. And, since the code is written using partial classes, any additions you make to your generated code are retained across subsequent generations.

If you are used to the EF visual modeling that comes with Visual Studio, you'll be pretty much at home. The goal was to duplicate at least those features and, in addition, add all the little things that should have been there. Things like:

  • importing entities from C# source, or existing DbContext definitions (including their entities) from compiled EF6 or EFCore assemblies
  • the ability to show and hide parts of the model
  • easy customization of generated output by editing or even replacing the T4 templates
  • entities by default generated as partial classes so the generated code can be easily extended
  • class and enumeration nodes that can be colored to visually group the model
  • different concerns being generated into different subdirectories (entities, enums, dbcontext)
  • string length, index flags, required attributes and other properties being available in the designer

and many other nice-to-have bits.

For comprehensive documentation, please visit the project's documentation site.

ChangeLog

2.0.0.0 (next version, RC2 now available on Github)

  • Dropped support for Visual Studio 2017; was getting to be too much to keep the tool viable for that Visual Studio version.
  • [NEW] It's now possible to have multiple diagrams for the same model, each showing a different view and synchronized as the model changes. Perfect for helping to understand large models.
  • [NEW] Added ability to specify foreign key properties (See msawczyn#55)
  • [NEW] Foreign key properties have a unique glyph so they can be easily picked out of the crowd
  • [NEW] Completely restructured assembly parsers; they now cleanly handle all combinations of EF6/EFCore2/EFCore3 and .NETCore2/.NETCore3/.NETFramework
  • [NEW] Modified assembly parsers to find declared foreign keys and add them to the model appropriately
  • [NEW] Added options dialog (Tools/Options/Entity Framework Visual Editor)
  • [NEW] Added use of GraphViz for model layout (if installed and path is added to "Tools/Options/Entity Framework Visual Editor")
  • [NEW] Added a default string max length to the options page for the designer
  • [NEW] Added switch to disable generation of classes and enumerations for those cases where they are coming from different assemblies but need to be in the model to avoid errors.
  • [NEW] Added visual indicator on classes and enumerations where code generation is disabled
  • [NEW] Added ability to override the base class of the generated DbContext to be something other than "DbContext"
  • [NEW] Attributes can now be flagged as abstract in the same way classes can.
  • Renamed toolbox category to "EF Model Diagrams"
  • Enhanced display of model elements in the Visual Studio property window's object list
  • Removed MSAGL layouts. No one understood them anyway.
  • Removed tool automatically installing NuGet packages. Too volatile.
  • Fix: OutputDirectory lost on reload (See msawczyn#144)
  • Fix: Unidirectional Many-to-One Association missing Required (See msawczyn#145)
  • Fix: Can't delete property initial value for Enum values (See msawczyn#148)
  • Fix: Support for Empty / blank "File Name Marker" (See msawczyn#149)

1.3.0.12

  • Fix: Compilation Error after Upgrading to v1.3.0.11 (See msawczyn#129)
  • Fix: Designer Drag/Drop Interpreter fails (See msawczyn#128 and msawczyn#132)
  • Fix: Enumerations generated into entity directory rather than enumeration directory

1.3.0.11

  • Removed default checks in constructors for scalars

1.3.0.10

  • Build for VS2017 support

1.3.0.9

  • Fix: backing fields caused duplicate database columns (See msawczyn#101)
  • Fix: bad merge broke MaxLength and MinLength properties in entity string properties (See msawczyn#103)
  • Fix: attribute parser ("edit as code" feature) didn't handle enumeration initial values well; it does now (See msawczyn#104)
  • Fix: showing cascade delete in the designer worked inconsistently (See msawczyn#108)
  • Fix: drag and drop developed regressions (See msawczyn#112 and msawczyn#114)
  • Fix: undo threw null reference errors when undoing drag and drop from code files (See msawczyn#113)
  • Fix: 'KeyBuilder' does not contain definition for 'Ignore' in EF Core (See msawczyn#115)
  • Fix: Identity properties ignore Setter Visibility setting (See msawczyn#118)
  • [NEW] Changed string MaxLength to differentiate between undefined and max length (See msawczyn#118)
  • Restructured display of namespaces and output directories in the designer's property window
  • Removed visibility option for setters of automatic identity properties.

1.3.0.7

  • Fix: bad merge broke MaxLength and MinLength properties in entity string properties (See msawczyn#103)
  • Fix: backing fields caused duplicate database columns (See msawczyn#101)

1.3.0.6

  • Added a model fixup for when user doesn't use full enumeration name for a property's initial value in an entity (See msawczyn#82)
  • [NEW] To more fully support DDD models, added a toggle for persisting either the property or its backing field (if not an autoproperty) for EFCore
  • [NEW] Can now override the NotifyPropertyChanged value for an entity on a per-property and per-association basis
  • Fix: Removed stray quote marks in default values for string properties (See msawczyn#86)
  • Fix: Minimum string length was ignored when setting properties via text edit (See msawczyn#86)
  • Fix: Required string identity property is not present in the constructor (See msawczyn#93)
  • Fix: Some issues with owned entities in EFCore
  • Fix: If NotifyPropertyChanged is active, wrong Output is generated (See msawczyn#97)
  • For folks wanting to read and/or modify the source for this tool, added a readme on how to deal with tracking properties

1.3.0.4

  • Fixed problematic code generation in constructors for classes having 1..1 associations (See msawczyn#74)
  • Fixed problem where database was always generating identity values, regardless of setting in the model (See msawczyn#79)
  • Fixed errors when creating nested project folders (See msawczyn#77)
  • Fixed cascade delete errors in EFCore when overriding cascade behavior (See msawczyn#76)
  • Added more information in headers for generated code (tool version, URLs, license info)

1.3.0.2

  • Fixed error found in some VS2017 installations preventing running due to dependency problems

1.3.0.1

  • Enhanced source code drag/drop to handle bidirectional associations and enumerations better.
  • [NEW] Can now import assemblies containing DbContext classes. Dropping a compiled assembly onto the design surface will attempt to process and merge it into the design.
  • [NEW] Added ability to merge two unidirectional associations into one bidirectional association (via context menu action)
  • [NEW] Added ability to split a bidirectional association to two unidirectional associations (via context menu action)
  • [NEW] Added Microsoft Automatic Graph Layout, giving the user the ability to choose the diagram's auto-layout strategy

Earlier changes

A big thanks to   for providing free development tools to support this project.