[C#] Lessql / NotORM voor C#

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • ? ?
  • Registratie: Mei 2007
  • Niet online
Weet iemand of er zoiets bestaat (of mogelijk is) voor C#.

http://www.notorm.com/
http://lessql.net/

In PHP gebruik ik Lessql (een afgeleide van notORM) heel graag, het is zo relaxed om met databases te werken! Maar weet iemand iets vergelijkbaars voor C#?

Voorbeeldje van lessql:

code:
1
2
3
4
5
6
7
8
//ophalen van het id uit de tabel goedkeuring, met een where filter
$row = $db->goedkeuring()->where('gebruiker_id = ? AND id = ? AND status IS NULL', $gebruiker_id, $id)->fetch();
echo $row->id;

//insert in de tabel bestand en ophalen van het gecreëerde id
$row = $db->createRow('bestand', array(bestandsnaam => $_FILES['bijlage']['name'][$i]));
$row->save();
$bestand_id = $db->lastInsertId();


Alles wordt on the fly gedaan, geen op voorhand te genereren modellen, gewoon db->tabelnaam->kolomnaam aanroepen en het staat er. :9~

Alle reacties


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Kijk eens naar Dapper.

[ Voor 52% gewijzigd door RobIII op 23-12-2016 13:34 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 08-10 23:48

Ventieldopje

I'm not your pal, mate!

? ? schreef op vrijdag 23 december 2016 @ 13:29:
Weet iemand of er zoiets bestaat (of mogelijk is) voor C#.

http://www.notorm.com/
http://lessql.net/

In PHP gebruik ik Lessql (een afgeleide van notORM) heel graag, het is zo relaxed om met databases te werken! Maar weet iemand iets vergelijkbaars voor C#?

Voorbeeldje van lessql:

code:
1
2
3
4
5
6
7
8
//ophalen van het id uit de tabel goedkeuring, met een where filter
$row = $db->goedkeuring()->where('gebruiker_id = ? AND id = ? AND status IS NULL', $gebruiker_id, $id)->fetch();
echo $row->id;

//insert in de tabel bestand en ophalen van het gecreëerde id
$row = $db->createRow('bestand', array(bestandsnaam => $_FILES['bijlage']['name'][$i]));
$row->save();
$bestand_id = $db->lastInsertId();


Alles wordt on the fly gedaan, geen op voorhand te genereren modellen, gewoon db->tabelnaam->kolomnaam aanroepen en het staat er. :9~
Erg relaxed maar erg eng ;) Kijk eens naar het Entity Framework.

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


Acties:
  • 0 Henk 'm!

  • ? ?
  • Registratie: Mei 2007
  • Niet online
Thanks Rob,

code:
1
2
3
4
5
6
7
var sql = @"select * from #Posts p  join #Users u on u.Id = p.OwnerId Order by p.Id";
var data = connection.Query<Post, User, Post>(sql, (post, user) => { post.Owner = user; return post;});
var post = data.First();
post.Content.IsEqualTo("Sams Post1");
post.Id.IsEqualTo(1);
post.Owner.Name.IsEqualTo("Sam");
post.Owner.Id.IsEqualTo(99);


Ik bekijk het zeker in detail. Maar op het eerste zicht: bovenstaande code, zou in lessql kunnen geschreven worden als:

code:
1
2
3
$row = $db->posts()->where('user_id = ?', 1)->fetch()
//en dan bv in een loop de naam van de user is dan gewoon simpel:
echo $row->user()->name; //hier verwijs je gewoon naar tabel met de fk_verwijzing en haal je de naam op.


Eng? I love it. :-)

Acties:
  • 0 Henk 'm!

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 08-10 23:48

Ventieldopje

I'm not your pal, mate!

? ? schreef op vrijdag 23 december 2016 @ 14:01:
Thanks Rob,

code:
1
2
3
4
5
6
7
var sql = @"select * from #Posts p  join #Users u on u.Id = p.OwnerId Order by p.Id";
var data = connection.Query<Post, User, Post>(sql, (post, user) => { post.Owner = user; return post;});
var post = data.First();
post.Content.IsEqualTo("Sams Post1");
post.Id.IsEqualTo(1);
post.Owner.Name.IsEqualTo("Sam");
post.Owner.Id.IsEqualTo(99);


Ik bekijk het zeker in detail. Maar op het eerste zicht: bovenstaande code, zou in lessql kunnen geschreven worden als:

code:
1
2
3
$row = $db->posts()->where('user_id = ?', 1)->fetch()
//en dan bv in een loop de naam van de user is dan gewoon simpel:
echo $row->user()->name; //hier verwijs je gewoon naar tabel met de fk_verwijzing en haal je de naam op.


Eng? I love it. :-)
Met een model koppel je de tabel naam (en evt. properties) los van je tabel en kun je ook hulp functies er bij toevoegen die van toepassing zijn op je model zoals een method voor het verkrijgen van de volledige naam (voor en achternaam), ik noem maar iets.

Als er dan wat verandert in de database dan heeft dit behalve voor het model geen invloed op de rest van je code en hoef je niks te refactoren.

Dus ja, eng, heel eng ;)

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ventieldopje schreef op vrijdag 23 december 2016 @ 13:55:
Kijk eens naar het Entity Framework.
TS vraagt specifiek om een NON-ORM. Kom, laten we een loei van een ORM aandragen :X

Ja, EF is leuk en heeft zeker voordelen, maar ook z'n nadelen. Dat jij het helemaal fantastisch (of "niet eng") vindt is leuk, maar dat is de vraag niet. Je zou ook kunnen kijken naar LLBLGen, NHibernate e.v.a. maar, again, dat was de vraag niet.

Dapper is één van de weinige, naast Petapoco en misschien nog een paar anderen die de middenweg tussen 'rauwe ADO.Net' en ORM kiezen.

Verder is er helemaal niets "engs" aan Dapper; het gebruikt gewoon parameterized queries etc. alleen bij refactoren zul je inderdaad een beetje moeten opletten wat je doet. Als je je DAO classes een beetje op orde hebt is dat echter peanuts en hangt 't ook erg af van de grootte van 't project etc.

[ Voor 16% gewijzigd door RobIII op 23-12-2016 14:45 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • EfBe
  • Registratie: Januari 2000
  • Niet online
LLBLGen Pro heeft sinds v5.1 ook een plain SQL API zoals dapper, en is nog sneller ook! ;) :P

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 21:03
Leuk dat Petapoco hier genoemd wordt. Ben ik een paar jaar geleden tegengekomen en sindsdien fan :). Eerste nuget package dat ik binnenhaal bij een nieuw project.

Roomba E5 te koop

Pagina: 1