1.1 Creating a Xomega solution
To create a new Xomega solution select the New Project option in your Visual Studio 2019 and then pick “Xomega” project type or enter “Xomega” in the search box to find the Xomega Solution template, as shown below.

Select the Xomega Solution template, and click Next to get to the following screen.

Set AdventureWorks as the project name, select the location to create the solution in, check to place solution and project in the same directory, and click Create.
You should see a Xomega Solution Configuration screen, which allows you to pick and configure client-side and server-side technologies and projects that you want to use in your solution. Any other projects that are required for your selection will be automatically included in the solution as well. We are going to demonstrate all of these technologies in this tutorial, so let’s just include all the projects in the new solution, as shown below.

You can update the names of the projects or specify alternative project configurations by expanding each project individually or by clicking the Preview Selection button to view and update configuration of all selected projects at once. We will use the default configuration, so you can go ahead and click the Create button.
Creating a solution with all the projects may take a while as all the dependency packages are being restored, and the projects are being configured, but once the dust settles, you can collapse all projects and see the following twelve projects created in your solution.

- AdventureWorks.Model is the project that will contain your XML domain and service model for the application, and various generators that perform model transformations and code generation.
- AdventureWorks.Services.Common project will have all interfaces and data contracts for your service model, as well as other classes that are shared between the client and the services layers.
- AdventureWorks.Services.Entities project will contain the back-end domain object classes based on the Entity Framework, as well as implementations of the services that use these domain objects.
- AdventureWorks.Services.Rest project will contain Web API controllers that expose the services via REST interface.
- AdventureWorks.Services.Wcf project will contain WCF service host files that expose the services via WCF interface.
- AdventureWorks.Client.Common project will contain Xomega Framework C# data objects for the presentation layer, as well as view models for different views, and will encapsulate a significant part of the client logic. These objects and view models are not specific to any particular client, and are reused by all C# based clients, such as WPF clients, Blazor Server or WebForms. This is why they are configured to have their own project.
- AdventureWorks.Client.Wpf project is the main application project for WPF clients, and contains WPF views.
- AdventureWorks.Client.Blazor.Common project will contain Blazor views and components that are shared between the Blazor Server and WebAssembly projects.
- AdventureWorks.Client.Blazor.Server project is the main application project for the Blazor Server client.
- AdventureWorks.Client.Blazor.Wasm project is the main application project for the Blazor WebAssembly client.
- AdventureWorks.Client.Web project is the main application project for classic ASP.NET clients, and contains WebForms views.
- AdventureWorks.Client.Spa project is the project for the Single Page Application client, and contains HTML views and TypeScript based view models and other client-side objects.
Now that you understand the solution structure, let’s import our initial Xomega model from the sample database.
Next: 1.2 Importing Xomega model from a database >