private static DbEntityTypeMappingFragment FindConditionTypeMappingFragment(
     TableMapping tableMapping, DbEntityTypeMappingFragment propertiesTypeMappingFragment,
     DbEntityTypeMapping conditionTypeMapping)
 {
     var conditionTypeMappingFragment =
         conditionTypeMapping.TypeMappingFragments.SingleOrDefault(x => x.Table == tableMapping.Table);
     if (conditionTypeMappingFragment == null)
     {
         conditionTypeMappingFragment = EntityMappingOperations.CreateTypeMappingFragment(
             conditionTypeMapping, propertiesTypeMappingFragment, tableMapping.Table);
         conditionTypeMappingFragment.SetIsConditionOnlyFragment(true);
         if (propertiesTypeMappingFragment.GetDefaultDiscriminator() != null)
         {
             conditionTypeMappingFragment.SetDefaultDiscriminator(
                 propertiesTypeMappingFragment.GetDefaultDiscriminator());
             propertiesTypeMappingFragment.RemoveDefaultDiscriminatorAnnotation();
         }
     }
     return conditionTypeMappingFragment;
 }
 private static void MoveDefaultDiscriminator(
     DbEntityTypeMappingFragment fromFragment, DbEntityTypeMappingFragment toFragment)
 {
     var discriminatorColumn = fromFragment.GetDefaultDiscriminator();
     if (discriminatorColumn != null)
     {
         var discriminator = fromFragment.ColumnConditions.SingleOrDefault(
             cc => cc.Column == discriminatorColumn);
         if (discriminator != null)
         {
             fromFragment.RemoveDefaultDiscriminatorAnnotation();
             fromFragment.ColumnConditions.Remove(discriminator);
             toFragment.AddDiscriminatorCondition(discriminator.Column, discriminator.Value);
             toFragment.SetDefaultDiscriminator(discriminator.Column);
         }
     }
 }