simple.data intro slides

Post on 15-Jan-2015

813 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Slides from the Simple.Data intro talk

TRANSCRIPT

Simple.Data.NET database access made easier

ADO.NETusing (var connection = new SqlConnection(connectionString)) { using (var command = connection.CreateCommand()) {

command.CommandText = "select Id, FirstName, LastName“ + " from people where Id = @id"; command.Parameters.Add("@id", SqlDbType.Int).Value = id;

connection.Open();

using (var reader = command.ExecuteReader()) { if (reader.Read()) { return new Person { Id = reader.GetInt32(0), FirstName = reader.IsDBNull(1) ? “” : reader.GetString(1), LastName = reader.IsDBNull(2) ? “” : reader.GetString(2), };} } } }

Microsoft.Data// What you should do...using (var database = Database.Open()){ var sql = "select Id, FirstName, LastName" + " from people where Id = @0";

return database.Query(sql, id);}

Microsoft.Data// What PHP refugees will actually do...using (var database = Database.Open()){ var sql = "select Id, FirstName, LastName" + " from people where Id = “ + id;

return database.Query(sql);}

Simple.Data

var database = Database.Open();return database.People.FindById(id);

// Easier to do it right

Simple.Data……is Database agnostic

…is naming-style tolerantPascalCase, SHOUTY_CASE, snake_case

…favours Convention over Configuration

…is not an O/RM

Simple CRUDdb.People.Insert(Id: 1, FirstName: “Bob”, …);

db.People.FindAllByName(“Bob”);

db.People.FindByFirstNameAndLastName(“Bob”, “X”);

db.People.UpdateById(Id: 1, FirstName: “Robert”);

db.People.DeleteById(1);

Complex queries db.Find(db.Users.JoinDate >= new DateTime(2010,11,13);

db.Find(db.Posts.Comments.Approved != "Y")

db.Find(db.Users.Age >= 18 && db.Users.Age <= 35)

(Simple.Data uses operator overloading to turn these expressions into its own SimpleExpression objects)

Simple O/RMvar person = db.People.FindById(1);

foreach (var telNo in person.PhoneNumbers){ if (telNo.DiallingCode.StartsWith(“07”)) { SendSpamText(telNo); }}

Simple.Data……is Open Source (MIT license)

…can be downloaded from:http://github.com/markrendle/Simple.Data/

…wants to be forked, patched and loved

Mark Rendle ~ twitter.com/markrendle ~ blog.markrendle.net

top related