Bara icon indicating copy to clipboard operation
Bara copied to clipboard

micro orm for .net cross-platform.Bara is a .Net library for Orm. Bara provides quick access to DataBase. Also it is a cross-platform orm which is written by .net Standard version 1.4 . You Can use it...

   |  _ \                    
   | |_) |  __ _  _ __  __ _ 
   |  _ <  / _` || '__|/ _` |
   | |_) || (_| || |  | (_| |
   |____/  \__,_||_|   \__,_|


Codacy Appveyor NuGet Gitchat
Codacy Badge Build status NuGet Join the chat at

Bara is a .Net library for Orm. Bara provides quick access to DataBase. Also it is a cross-platform orm which is written by .net Standard version 1.4 . You Can use it on .net Framwork platform or .net Core platform with Any type DataBase which Dapper Support.


  • Using Dapper for DataMapping and DataAccess.
  • Using Xml Config and Manage your sql like Ibatis.
  • Hot Update Sql when you changed your sql sentence.


Just install the Bara NuGet package:

PM> Install-Package Bara

If your want Bara Extension.(A collection of commonly used methods already included)

PM> Install-Package Bara.DataAccess

How To Use After Intalled

1.Add BaraMapConfig.xml To Root Path.

  • Config whether the config need Watched.It will be update when setting true.
  • Config DataBase ConnectString
  • Split Writen DB and Read DB. Specify each Database Weight which indicate the Access probability.
  • Specify the ParameterPrefix(MSSQL:'@',Mysql:'#'...)
  • Config your Maps which your sql in.
<?xml version="1.0" encoding="utf-8" ?>
<BaraMapConfig xmlns="">
    <DbProvider Name="SqlClientFactory" ParameterPrefix="@" Type="System.Data.SqlClient.SqlClientFactory,System.Data.SqlClient"/>
    <Write Name="WriteDB" ConnectionString="Data Source=.;database=GoodJob;uid=sa;pwd=App1234"/>
    <Read Name="ReadDB-0" ConnectionString="Data Source=.;database=GoodJob;uid=sa;pwd=App1234" Weight="50"/>
    <Read Name="ReadDB-1" ConnectionString="Data Source=.;database=GoodJob;uid=sa;pwd=App1234" Weight="50"/>
    <BaraMap Path="Maps/" Type="Directory"></BaraMap>

Oracle:(Reference ODP Library From ./Doc/OracleDataProvider)
<DbProvider Name="OracleClientFactory" ParameterPrefix=":" Type="Oracle.ManagedDataAccess.Client.OracleClientFactory,Oracle.ManagedDataAccess,Version=,Culture=neutral, PublicKeyToken=89b483f429c47342"/>
<Write Name="WriteDB" ConnectionString="User Id=User;Password=User;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=;"/>

2.Config BaraMap Xml Files(eg:T_Test.xml in Root-Folder Maps)

3.Register To DI in Startup.cs


4.Use Any Where

4.1 GetEntity

var mapper = new BaraMapper();
var result = mapper.QuerySingle<T_Test>(new Core.Context.RequestContext
      SqlId = "GetEntity",
      Scope = "T_Test",
      Request = new { Id = 1 }

4.2 QueryList

var list= mapper.Query<T_Test>(new Core.Context.RequestContext

4.3 Add

int i = mapper.Execute(new Core.Context.RequestContext
      Scope = "T_Test",
      SqlId = "Insert",
      Request = new { Id = 4, Name = "Rocher4" }

4.4 Update

int i = mapper.Execute(new Core.Context.RequestContext
      Scope = "T_Test",
      SqlId = "Update",
      Request = Entity

Cache Config

Firstly You Need Config Cache in BaraMap file .

    <Cache Id="T_Test.LruCache" Type="Lru">
      <Parameter Key="CacheSize" Value="100"/>
      <FlushInterval Hours="0" Minutes="10" Seconds="0"/>
      <FlushOnExecute Statement="T_Test.Insert"/>
      <FlushOnExecute Statement="T_Test.Update"/>

Secondly You Need Relate Cache to your statement.

<Statement Id="QueryList" Cache="T_Test.LruCache">
  SELECT Top 10 T.* From T_Test T With(NoLock)
  <Include RefId="QueryParams"/>

After config Metioned.The Same-Query after first Query Will fetch Data from Cache.Also it will dismiss after Insert or Update method executed.

Next Step

  • 0.Tags(Logic bit operator)
  • 1.Test
  • 2.Test Compare
  • 3.redis cache
  • 4.zookeeper(options)
  • 5.add Doc
  • 6.Release


  • Can DataAccess be more Simple?(Auto Generate dao Code for Mapping Method Name.)