Simple.Data
...an ORM without O, R or M
Timothée Bourguignon
MATHEMA Software GmbH
Simple.Data ...an ORM without O, R or M Timothe Bourguignon - - PowerPoint PPT Presentation
Simple.Data ...an ORM without O, R or M Timothe Bourguignon MATHEMA Software GmbH Simple.Data an ORM without O, R or M Timothe Bourguignon 1 What is Simple.Data? An O/RM without O, R or M! 3 Hands-on! SQL Server +
...an ORM without O, R or M
MATHEMA Software GmbH
1
3
4
5
6
7
9
MongoDB OData Azure Ado Core SqlServer SqlCompact40 Oracle VistaDB MySQL SQLite PostgreSQL SQLAnywhere Informix Mocking
10
PM> Install-Package Simple.Data.SqlServer Simple.Data.Ado Simple.Data.SqlCompact40 Simple.Data.Sqlite Simple.Data.MongoDB ...
11
12
13
14
Table/View Command Column Parameters
15
//Full indexer way db["sweets"].FindAllBy(Candy: "Oreo"); //Hybrid fluid + indexer db.sweets.FindAllBy(Candy: "Oreo"); db["city"].FindAllByCityName("Paris"); //Find by „Candy“ or find by „C and Y“? db.sweets.FindAllByCAndY("Oreo");
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Natural joins can be used as part of an explicit join, the join is then eager loaded
Foreign-Key relationship present No Foreign-Key relationship necessary (no referential integrity)
31
32
33
db.Albums.All().OrderByGenreId() .ThenByArtistIdDescending();
34
int albumCount = db.Albums.GetCount( db.Albums.GenreId == 2);
35
db.Albums.All().Select(db.Albums.Title, db.Albums.ArtistId);
36
var albums = db.Albums.All().Select( db.Albums.AlbumId, db.Albums.Title.As("AlbumName"));
37
var albums = db.Albums.FindAllByGenreId(1) .Select(db.Albums.Title) .Where(db.Albums.Price < 8); db.Albums.All().Where( db.Albums.Title.Like("%Side Of The%"));
38
var cheapAlbums = db.Albums.All() .Having(db.Albums.Price < 9).ToList(); var totalCost = db.Albums.All().Select( db.Albums.Price.Sum().As("TotalCost"));
39
CREATE PROCEDURE ProcedureWithParameters @One VARCHAR(MAX), @Two VARCHAR(MAX) AS SELECT * FROM Customers WHERE Firstname = @One and Lastname like @Two db.ProcedureWithParameters(1, 2);
40
using (var transaction = db.BeginTransaction()) { transaction.albums.Insert(GenreId: 1...); transaction.Commit(); }
41
42
43
[Test] public void Should_do_something() { var adapter = new InMemoryAdapter(); Database.UseMockAdapter(adapter); var db = Database.Open(); db.Test.Insert(Id: 1, Name: "Alice"); //... }
44
45
46
47
48
49
– https://github.com/markrendle/Simple.Data
– http://nuget.org/packages?q=simple.data
– https://groups.google.com/forum/?fromgroups#! forum/simpledata
– @MarkRendle – http://blog.markrendle.net/
50
tim.bourguignon@mathema.de about.me/timbourguignon