Skip to main content

Posts

Showing posts from June, 2014

MVC: Fix: The version of SQL Server in use does not support datatype 'datetime2'.

This message appeared today after posting a new build to our ASP.NET 4 web app: The version of SQL Server in use does not support datatype 'datetime2'. The DBA doesn’t use datetime2 because it’s new in SQL Server 2008 and the site runs on 2005.  It turns out that Entity Framework 4 somehow got the idea to use  SQL Server 2008. The fix was to edit the .edmx file in an XML editor and set the   ProviderManifestToken="2005 " instead of 2008. (You need to rebuild.) Here’s how the line should look against SQL Server 2005: <Schema Namespace="OfficeBookDBModel.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2005" xmlns:store=http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl">    I’m not sure where EF got the notion to ‘upgrade’ to SQL Server 2008. Perhaps it detected something locally.  I’ve jus

MVC: Exact string Custom Validation

Model Property [Display(Name = "SchoolName CustomValidator(ValidName='MySchool')")] [ExactString(ValidName = "MySchool", ErrorMessage = "The Input Name must exactly equal by Valid Name")] public string SchoolName { get; set; } Custom Validation class public class ExactStringAttribute : ValidationAttribute ,IClientValidatable     {         public string ValidName { get; set; }         public override bool IsValid(object value)         {             if (value != null)                 if (value.ToString() == ValidName)                     return true;             return false;         }         public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)         {             var rule = new ModelClientValidationRule();             rule.ErrorMessage = FormatErrorMessage(metadata.GetDisplayName());             rule.ValidationParameters.Add("validname",