2. ADO.NET
using (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),
};
} } } }
3. 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);
}
4. 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);
}
5. Simple.Data
var database = Database.Open();
return database.People.FindById(id);
// Easier to do it right
8. 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)
9. Simple O/RM
var person = db.People.FindById(1);
foreach (var telNo in person.PhoneNumbers)
{
if (telNo.DiallingCode.StartsWith(“07”))
{
SendSpamText(telNo);
}
}
10. 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