MySql is a free database engine provided by Oracle. Our goal is to make this database back-end easy to use in a model driven fashion with Entity Framework.
What is Model Driven Development
Also called Model-driven engineering (MDE), Domain Driven Design (DDD), Model-driven development (MDD) is a software development methodology which can be defined in different ways. There are some very complicated definitions. However we define it very simply for nHydrate: the model is king. The existing framework is a model driven architecture that creates any number of .NET projects based on a single model. Models are most useful when they can be used to actually generate code. Most flow-charts, URL diagrams, etc are in the end just pretty pictures, if you cannot generate code based of them.
What is nHydrate?
nHydrate is a development platform that has been out for some years now with thousands of downloads. It is integrated directly into the Visual Studio environment. It allows you to model your application’s persistence layer and coordinate it with database change scripts, services, and other programmatic layers. It builds on top of standard Entity Framework in the following ways.
- Database always stays in sync with model!!!
- Database Functions support
- Dependency walking to database views
- Built-in row based auditing
- Built-in table (shadow) auditing tracking for row add, edit, and deletes
- Optional generated/managed stored procedures for CRUD operations
- Static functions for deleting data via a lambda statement (no more loading entities just to remove them)
- Static functions for updating data via a lambda statement (no more loading large groups of entities to update a field)
- Creates read-only type tables backed by generated enumerations
- Add static data to any entity
- Removes need for magic numbers and magic strings in code
- Supports model based validation generated directly into code (required, regular expression, min/max values, etc)
- Provides a model based, generated documentation website
- Supports metadata on model objects for consumption by custom generators
- Lambda based entity Include syntax (not magic strings)
- Supports standard (traditional) connection strings
What is nHydrate MySql Plug-in?
The new MySql generator template will allow you to synchronize your MySql database and an Entity Framework layer easily with an nHydrate model. This allows you to have a nice, visual designer to create and manage your .NET architectural solution using a MySql back-end with evolutionary database design. In short you model, generate, and update your database as many times as needed, while the generated installer project always keeps you database in sync with your model and API. The model tracks your changes and creates upgrade scripts automatically!
A big win we want to bring to the table is database concurrency control. This is lacking from MySql. We want to implement optimistic concurrency much like SQL Server.
Evolutionary Database Design
nHydrate allows you to model and generate your application framework without having to worry about database updates. This is a major issue for developers who have production systems. Product managers constantly want to add features and enhance functionality. More often than not, this requires database changes. By modeling your application with nHydrate, you get database migration built-in. Each time you generate a model, the database change scripts are automatically created. The generated installation project allows you to update any database version to the latest version. All databases are versioned. Of course you can always add custom database scripts to any step of the upgrade process. The entire framework allows you to upgrade production systems to your latest developments quickly and seamlessly. These concepts are derived directly from the Martin Fowler website. Many of his concepts and patterns are baked directly into the nHydrate platform.
The nHydrate tool was started many years ago in its previous non-Entity Framework version to facilitate problems we had at specific companies. Like all groups, we started developing with the inherent deficiencies of .NET in the early days, like weak-typed datasets. We developed patterns and standardized templates to address these issues and provide as much compile-time checking as possible. Over the last few years, we have converted the modeller to the new visual design based on Microsoft DSL tools and converted the generated code to Entity Framework.
The deliverable will be a Windows installation of the nHydrate MySql plug-in. This will be another extension of the nHydrate open source platform. This new plug-in will be added to the others already installed and show up in the list of options when generating. It will be as easy to manage a MySql installation as a Sql Server installation.
Thanks for Your Support!
There are more people jumping on the modelling bandwagon now. The whole purpose of the project to to promote model driven architecture. This is one more step to replace hand-coding and build pattern based frameworks. We as an industry really need tools that let people model, coordinate, and generate application models more easily. With your help, we can do it. Thanks for your support!