Skip to Content
Technical Articles
Author's profile photo Radu Constantin Simen

How to create a simple API with Hana Generic Repository



The first example on using the Hana Generic Repository that is described here and published on here



  • SAP Cloud Platform Trial Account with Cloud Foundry Org and Hana as a Service instance or Hana Cloud instance
  • HANA test container deployed containing test schema from here
  • or any other Hana schema connection available
  • Visual Studio Community and dotnetcore SDK 2.1
  • Hana Client Install Windows (x86_64) zip file containing dotnetcore x64 driver from here
  • dotnetcore driver installed after the clients file download

Create a new Project

  • Create a new Project
  • ASP NET Core Web Application with C#
    • App name: WebApplication1
    • Choose the right folder
    • Solution name : WebApplication1
    • Click Next button
    • From templates list choose API
    • Click Create button

Create new Controller

  • On Controllers Folder, right click and choose Add -> Controller
  • Choose API Controller Empty
  • Click Add
  • Enter new Controller Name : ModelController
  • Click Add
  • Delete the auto-generated controller (in my case it was WeatherForecastController.cs)
  • Delete the WeatherForecast.cs model class also
  • Build Solution
  • Run on IIS Express

Add Reference to Nuget Package

  • on WebApplication1 project right clieck and Choose Manage Nuget Packages
  • on Browse tab of the opened window Search for HanaGenericRepository.dll
  • Select and click Install button
  • click OK button and the I Accept button for the licence

Add Reference to SAP HANA 2.0 dotnetcore x64 driver

  • On Dependencies, under WebApplication1 project, right click and choose Add Reference
  • In the new window click on the Browse button, found in the bottom, near the Ok/Cancel buttons
  • Choose the path file where you installed the Hana Driver for dotnetcore, select the file
  • click Add button
  • Build the solution
  • Select the driver dependency and choose to always Copy Local on build

Create New Model Class

Create a new project folder with name : Models

Create a new class with name : Model1.cs

Paste the code below in the new file

using HanaGenericRepository.Attributes;
using System;

namespace WebApplication1.Models
    public class Model1
        public Guid Id { get; set; }

        public String Name { get; set; } = string.Empty;

        public bool Active { get; set; }

        public int IntValue { get; set; } = 0;

        public DateTime DateTimeValue { get; set; } = DateTime.MinValue;

        public string Email { get; set; } = string.Empty;

        public string NotMappedProperty { get; set; }

        public double NotMappedProperty2 { get; set; }


How to create Database Connection Info Object

HanaConnectionInfo hanaConnInfo = new HanaConnectionInfo()
    Tenant = "HXE",
    Password = "Pr3W0jUm8.5iV1Sn3qwIb4NHFHFUZlhc6Px3QKsZKXj8H6X_3jqIu_FG65K7x3clInZ3mKNPKMXh1ScL7nZeHGzNPvlZkAWHFa_7yJF.dKJORTGj5JS22fj9jWwHFStf",
    Schema = "D118DA114BA14CA5AA1ECF261DBAE68B",
    Host = "hxehost",
    Port = 39015


How to Create a Repository Object


var connFactory = new HanaDbConnectionFactory();
var hanaConnection = connFactory.CreateConnection(hanaInfo);
repo1 = new HanaGenericRepository<Model1>(hanaConnection, true);


Create a new Repository Object in the ModelController.cs

Paste the code below in the ModelController.cs

using HanaGenericRepository;
using Microsoft.AspNetCore.Mvc;
using Sap.Data.Hana;
using System;
using System.Collections.Generic;
using TestAPIWithHanaGenericRepository.Models;

namespace TestAPIWithHanaGenericRepository.Controllers
    public class ModelController : ControllerBase
        private HanaConnectionInfo _hanaConnInfo = null;
        private HanaConnection _hanaConnection = null;
        private bool _preventSqlInjection = true;

        private HanaGenericRepository<Model1> repo1 = null;

        public ModelController()
            _hanaConnInfo = new HanaConnectionInfo()
                Tenant = "HXE",
                UserName = "D118DA114BA14CA5AA1ECF261DBAE68B_183JN8QS8E7HWULO7SL3FNIUQ_RT",
                Password = "Wk98eti9PfZt0UDYB90nFHXExBkV0H19A4COXLwkzGVf5TAelMQOU-U1AhzhRh_rMlTRlqNaOW8y1nRbES-ddKyzeOikp_n_0bM4gxOTwGB.FeFX062GBnUiMzha89pe",
                Schema = "D118DA114BA14CA5AA1ECF261DBAE68B",
                Host = "hxehost",
                Port = 39015

            var connFactory = new HanaDbConnectionFactory();
            _hanaConnection = connFactory.CreateConnection(_hanaConnInfo);
            repo1 = new HanaGenericRepository<Model1>(_hanaConnection, _preventSqlInjection);

        public List<Model1> GetModel1Objects()
            var count = repo1.Count();
            if(count == 0)
                var newRecord = new Model1()
                    Active = true,
                    DateTimeValue = DateTime.Now,
                    Email = "",
                    Id = Guid.NewGuid(),
                    IntValue = 1,
                    Name = "name",
                    NotMappedProperty = "does not persist",
                    NotMappedProperty2 = 2f
                var ok = repo1.Create(newRecord);

            var models = repo1.GetPaged();            
            return models;


Run the new API

  • Build and Add missing using namespaces if needed (mouse over and Add)
  • Run on IIS Express
  • Open Browser with the route http://localhost:PORT/api/model


Sample code



Assigned Tags

      Be the first to leave a comment
      You must be Logged on to comment or reply to a post.