What's New in DevMagic Studio
Last Updated: June 2023
New features in DevMagic Studio Beta
DevMagic Studio Beta has the following new features.
Installer
- The installer is adjusted for installation of the features required for designer-developed projects.
Project types
Provides the following project types:
The designer-developed project types include:
Web API: Create a designer project where entities can be easily created and back-end Web APIs can be automatically generated.
Library: Create a designer library which can be easily referenced by other projects.
The other project types (same as those in the IDE earlier versions) all belong to manually-coded project types.
Item types
Provides the following items for supporting the designer-developed project types:
- Entity Design (from Scratch): Create an empty entity metadata file.
- Entity Design (from Database): Create entity metafiles (one or multiple at a time) from tables/views in existing databases. The database schema will be automatically imported to the entity.
- Base Entity Design: Create a base entity which can be inherited by the other entities. A base entity is mainly used for inheritance. A base entity has no Table/Schema and Inheritance mapping options; no Filter and Service & APIs; and it can only inherit from another base entity.
- Owned Entity Design: Create an empty owned entity metadata file. An owned entity is an entity to be embedded within its owner (another entity). An owned entity has no Table/Schema and Inheritance mapping options; no Filter and Service & APIs; and it cannot inherit from any other entity.
- Enum Design: Create an enumerator metadata file.
Enum Designer
- Supports basic settings such as name, value.
- Supports bit operation. The user can set a flag for bit enumeration in the enum designer. When the field type is Enum, multiple enumeration values can be selected.
Entity Designer
Field design
- Supports inheriting fields from other entities.
- Supports the following inheritance strategies: TPH, TPT, TPC.
- Supports various field types including basic data types, built-in types, computed fields, enum types, entity types.
- Supports basic settings such as name, value, type, required, length, value range, default value, concurrency, delete strategy etc.
- Supports collection.
- Supports relations (one-to-one, one-to-many, many-to-one, many-to-many).
- Supports index.
- Supports composite primary keys. User can configure multiple fields as the primary keys for an entity.
- Supports foreign keys (generating foreign keys for associated fields and using foreign keys in composite primary keys).
- Supports keyless entities. If entities have no primary key, the base services that require the primary key will not be generated in the designer.
- Supports expressions including common functions, constructor (including enum), CurrentUser.
Filter design
- Supports parameters (and Collection for parameters).
- Supports defining conditions using fields, expressions, and scope (priority).
- Supports previewing the filter code while designing.
Service & API design
- Supports adding base services, customizing base services, and automatically generating APIs.
- Supports sorting data in the database and return results.
- Supports assignment with values or cascade query.
- Supports related settings such as authorization settings, parameter settings, etc.
Project properties
- Supports enabling authorization for the entire project and specifying the authorization policies for all or particular APIs.
- Supports customizing the code generation for certain code fragments such as Using, inheritance, class attributes, property attributes, method attributes, constructor injection, and code snippet.
Project generation
- Supports generating C# code with concise structure and layers:
- [project].Common: the development toolkits and extension functions that are referenced or dependent by the Contracts or Identity projects.
- [project].Contracts: the contract layer which defines the contract for the service.
- [project].Controllers: the controller layer which defines the controller for the service.
- [project].Dal: the data access layer such as EF Core which contain the database-related configurations (repository, unit of work, DbContext) and data initialization (value comparers, value converters).
- [project].Services: the service layer which implements the contracts.
- [project].WebApi: the representation layer which sends data to users.
- [project].Identity: the authentication service layer which authorizes the user registration and login internally.
- Supports creating various profiles for project generation. Profile settings include
- whether to specify the prefix of entity file name.
- whether to create a schema folder for entities.
- whether to overwrite existing project files.
- whether to specify the location of projects (and items in each project) and namespace for the projects.
- specifying the ORM (only EFCore is supported currently).
- whether to configure the referenced projects separately.
- configuring a default database connection for the application database and identity database (used for authorization).
- Supports automatically handling project references and package references.