/// <summary>
 /// Set DefaultValueSql for sepecific property name and type
 /// </summary>
 /// <param name="modelBuilder"></param>
 /// <param name="propertyName">Name of property wants to set DefaultValueSql for</param>
 /// <param name="propertyType">Type of property wants to set DefaultValueSql for </param>
 /// <param name="defaultValueSql">DefaultValueSql like "NEWSEQUENTIALID()"</param>
 public static void AddDefaultValueSqlConvention(this ModelBuilder modelBuilder, string propertyName, Type propertyType, string defaultValueSql)
 {
     foreach (IMutableEntityType entityType in modelBuilder.Model.GetEntityTypes())
     {
         IMutableProperty property = entityType.GetProperties().SingleOrDefault(p => p.Name.Equals(propertyName, StringComparison.OrdinalIgnoreCase));
         if (property != null && property.ClrType == propertyType)
         {
             property.SetDefaultValue(defaultValueSql);
         }
     }
 }
 protected virtual void ConfigureProperty(IMutableProperty property, string configuration, string value)
 {
     switch (configuration)
     {
         case "DefaultValue":
             property.SetDefaultValue(int.Parse(value));
             break;
         case "DefaultValueSql":
             property.SetDefaultValueSql(value);
             break;
         case "ComputedColumnSql":
             property.SetComputedColumnSql(value);
             break;
         case "SqlServerValueGenerationStrategy":
             property.SetValueGenerationStrategy(SqlServerValueGenerationStrategy.IdentityColumn);
             break;
         default:
             throw new NotImplementedException();
     }
 }