simple.data intro slides
DESCRIPTION
Slides from the Simple.Data intro talkTRANSCRIPT
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