Using a Database (Data Repository) in an Evoke App Design
The Database/Data Repository is key to all business apps. Evoke allows you to connect to and manage data with multiple databases, of all different types, from within a single app design.
One of the fundamental principles of Evoke is that you should not need to change your database, its structure or any part of it to be able to use it within an Evoke built app.
New Evoke users are invited to participate in an "Environment Review" meeting. During the environment review BlueFinity will help check that the Evoke installation has been completed, users can access and use Evoke, help configure Visual Studio, establish and help configure the chosen .NET connectivity to the database, create an initial app and ensure connection to the required database(s), generate the app and run it on your computer.
This section summarises some of the options for using your different databases with an Evoke App Design.

Connecting your app design to a Data Repository (Database)
When you want to connect a database to your app design a wizard in Evoke will guide you to:
Identify each database/data repositories
For each database you want to connect your app to, you will need to:
  • Identify the Repository Technology as either a) SQL b) MultiValue or c) Other (a Custom Data Environment)

  • Identify the 'flavour' of the database e.g. SQLServer, MySQL, Oracle, etc for SQL or jBASE, Universe, D3, mvBASE, etc for MultiValue

Identify how you will connect to the database
Depending on the database type you will need to:
  • Identify how you will connect to your database. You can select, from a dropdown list, the connectivity product/component you want to use.

    • For SQL databases you can choose from, amongst others, SQL database components such as Dynamic DML using ADO.Net, ODBC or ODP.Net client libraries/Stored Procedures, etc

    • For MultiValue databases you can choose from, amongst others, mv.Net Core Objects, U2 data client library, Rocket connectivity tools, etc

    • Other connectivity products are available

  • Set up your security requirements e.g. your Connection String, initial catalog and the database user name or your Login Profile Name and Connection Password

Database connections within Evoke are called Repositories
You can then use Evoke connection tools to help check the connection and ensure a good communications route to your database.
Or if you would prefer BlueFinity can help by doing all of this with you as part of the "Environment Review" that is available without addiional costs to all Evoke Users.

Set up the data structures you will use in your app design
Now you have connected to your physical databases, you will want to define, for the App User Interface (UI), the data structures (shape of the data) that the UI will use. Your app can use these data structures to manipulate data that will be passed back and forth with the database. In Evoke these are called Entities.
These app data structures can be automatically imported and exported to and from your database into/from your app design with a single click.
Entities in Evoke define the structure of the data that is part of the tables/files in your physical (backend) database and will be used by the App.  As such an Entity may define a record with several fields/properties that are spread out throughout a record with many dozens of properties/fields in the physical database. However, you UI data structures can be set up as they would be best suited for the app and not limited by the way your database is structured.
In addition you can set up data structures that are local to your app and are not stored in your databases, create calculated properties, classifications (static and dynamic drop-down lists) and Selections that will populate data from your database into your app UI to be displayed, updated, deleted, added to and manipulated in other ways before being updated in your database repository. Entity structures can be automatically imported and exported to and from your database. You can also use all the linking structures that you use in your existing database e.g SQL (joins, link tables, etc) and MultiValue (local or remote keys, embedded multivalues and subvalues, etc) as part of your Evoke data structures.

Database connections within Evoke are called Repositories
Map your database fields/columns to you app data structures fields
For each database/data repository you need to provide mapping information that defines which Evoke Entities are associated with which tables/objects/files and which database fields/properties map on to which Evoke Entity Properties within your app design data model. This process is completed automatically when you import your database data strucures into your app design and can be further tweaked or refined, if desired, in the Data Mappings section of Evoke.

Select which Tables/Objects are in which database
Evoke can access tables/objects in different databases, so you might have a product table in a SQLServer database, a Supplier table/file in a Universe (MultiValue) database, a customer table in Oracle, an orders file in a jBASE (MultiValue) database, etc. You simply identify which Evoke Entities relate to which tables or files in which physical database (Repository). It is very likely that initially all of your entities will be hosted in the same, single database (repository), however it is possible to access multiple repositories within a single app as and when required.

Select data from databases for use in your app
Database connections within Evoke are called Repositories
Selections are used to Select certain data from your Repository (database) Tables/Files/Objects to populate local data areas (Data Sources) within your app.
Evoke provides "wizards" to help you create your selections, including any parameters to be passed into them. Each one is linked to a Table/File/Object in your database and Evoke generates the full selection code (even the DataBasic for MultiValue databases).
You are able to Filter and Sort your data, call your selections from Evoke widgets and click actions. You can even customise your selections, and when you do the customisation will be automatically preserved through each regeneration of your app design so that you do not have to re-apply it each time.
Evokes unique "custom code hooks" allow you to easily incorporate any existing sub-routines or code that you have written into the selection or data manipulation process without having to re-write it.