Convert dotnet DateTime to Sqlserver SqlDateTime
The SqlDateTime has a narrower span than the Dotnet ditto; dotnet starts from year 0 but sqlserver from 1753. This means that uninitialised DateTime fields in dotnet will give runtime execution errors when trying to persist them in a sqlserver database.
I write together a small and simple method for making sure the DateTime interval is inside the valid SqlDateTime interval.
public static class DateTimeExtensions { /// <summary>This method returns the datetime fitting into min/max of Sqlserver /// as per http://codebetter.com/petervanooijen/2008/08/21/valid-date-time-values-in-sql-server-sqldatetime-vs-datetime/ /// </summary> /// <param name="dt"></param> /// <returns></returns> public static DateTime ToValidSqlserverDatetime(this DateTime dt) { // Must cast System.Data.SqlTypes.SqlDateTime.MinValue: http://codebetter.com/petervanooijen/2008/08/21/valid-date-time-values-in-sql-server-sqldatetime-vs-datetime/ if (dt < (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue) { return (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue; } else if (dt > (DateTime)System.Data.SqlTypes.SqlDateTime.MaxValue) { return (DateTime)System.Data.SqlTypes.SqlDateTime.MaxValue; } else { return dt; } } }
The code is easier to read at pastebin.
Communicate, communicate, communicate – and replacing a medium with another
Communicate, communicate, communicate – and replacing a medium with another
Scope_Identity doesn’t return an Int in sqlserver but a Decimal
This is an old item. Scope_Identity in Sqlserver doesn’t return an Int but a Decimal. So in Dapper the call is
var id = conn.Query<Decimal>(...
VB.Net and lambda
Using the terse lambda syntax used in C# also in VB.Net is also (almost) possible.
Here is a short example:
var nameList = myFacade.GetData(). where( x => x.ID = 42 ). select( x => x.Name ). ToList();
which in VBNet becomes:
Dim nameList = myFacade.GetData(). Where( Function(x) x.ID = 42 ). Select( Function(x) x.Name ). ToList()
Note that the periods have to be at the end of the line, otherwise the multi line capability of Vbnet doesn’t work. This can be remedied by the old trailing underscore of VB.
If you need to set the type of x it is also doable:
Dim nameList = myFacade.GetData(). Where( Function(x As MyClass) x.ID = 42 ). Select( Function(x As MyClass) x.Name ). ToList()
Unit tests, TDD, BDD
Maybe we shouldn’t think of unit tests, TDD or BDD but more of go no go tests. Whatever you automatically test it has a Go/NoGo, Yes/No, Success/Fail result.
Communicate, communicate, communicate – and brief win8/metro
Communicate, communicate, communicate – and brief win8/metro
C#: string.ToUpper() and char.ToUpper()
In C# there is a
"mystring".ToUpper()
but nothing in the char class. Instead use
char.ToUpper('x')
… or write an extension method.
Singleton in dotnet
Singleton is often considered the simplest pattern but I digress. Except for the simplest cases writing a singleton requires thorough knowledge about the language at hand; one really has to know the locks and ifs and constructors to make a zyzygy.
Below is linked a good article. I don’t consider it as wordy since it really explains the subject in depth in a simple way.
There are 6 examples where 4 can be used. At the bottom of the article is a short explanation if you don’t want to grok it.