Skip to content

Instantly share code, notes, and snippets.

@nnajm
Created October 23, 2013 17:35
Show Gist options
  • Save nnajm/7123100 to your computer and use it in GitHub Desktop.
Save nnajm/7123100 to your computer and use it in GitHub Desktop.

Yaktyn ORM

Badr ORM is a standalone library that can be used in any .net project. Its main features are:

  • map data tables to models (classes implementing Badr.Orm.Model)
  • manipulate models in a simple, elegant and readable manner
  • minimumize database hits
  • seamless integration within any context
library(rClr)
setwd('F:/Projects/R/yaktyn/')
main.path <- 'F:/Projects/git/badr-project/test/Badr.Test/bin/Release/'
# dll.name <- paste0(main.path,'x86/SQLite.Interop.dll')
# clrLoadAssembly(dll.name)
dll.name <- paste0(main.path,'Badr.test.dll')
clrLoadAssembly(dll.name)


Intialisation

ormTest <- clrNew('Badr.Test.Orm.OrmTest')

Insert new memebr

for(int i = 0; i <10;i++){
  dynamic newMember = new Member();
  newMember.Role = "role" + i;
  newMember.Rate =  i *100;
  newMember.Save(); // newMember.Id is updated from database (last_insert_id)
  }

set.seed(1)
members = data.frame(Role=paste('role',1:10),
                     Rate = sample(1:100,10),stringsAsFactors=FALSE)

res <- apply(members,1,function(mem){
  newMember = clrNew('Badr.Test.TestApp.Models.Member')
  clrSet(newMember,"Role",mem['Role'])
  clrSet(newMember,"Rate",as.integer(mem['Rate']))
  clrCall(newMember,"Save")
  })

library(RSQLite)
drv <- dbDriver("SQLite")
con <- dbConnect(drv, dbname = 'Orm/badr_orm_test.db')
dat <- dbReadTable(con,name='member')
library(xtable)
print(xtable(head(dat)), type = "html")

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment