@@ -812,6 +812,148 @@ void AssertDbStringParamSizes(IDbCommand cmd)
812
812
Assert . That ( row . FirstName , Is . EqualTo ( "Updated" ) ) ;
813
813
}
814
814
}
815
+
816
+ [ Test ]
817
+ public void Can_update_DefaultValue ( )
818
+ {
819
+ using var db = OpenDbConnection ( ) ;
820
+ db . DropAndCreateTable < DefaultValue > ( ) ;
821
+ AssertDefaultValueFieldTypeDefaultValues ( ) ;
822
+
823
+ var orig = new DefaultValue {
824
+ Id = 1 ,
825
+ Bool = true ,
826
+ NBool = false ,
827
+ Int = 2 ,
828
+ NInt = 0 ,
829
+ String = "A" ,
830
+ } ;
831
+ db . Insert ( orig ) ;
832
+ var row = db . SingleById < DefaultValue > ( 1 ) ;
833
+ AssertDefaultValues ( row , orig ) ;
834
+
835
+ db . UpdateOnly < DefaultValue > ( new Dictionary < string , object > {
836
+ [ nameof ( DefaultValue . Id ) ] = 1 ,
837
+ [ nameof ( DefaultValue . Bool ) ] = false ,
838
+ [ nameof ( DefaultValue . NBool ) ] = null ,
839
+ [ nameof ( DefaultValue . Int ) ] = 0 ,
840
+ [ nameof ( DefaultValue . NInt ) ] = null ,
841
+ [ nameof ( DefaultValue . String ) ] = null ,
842
+ } ) ;
843
+
844
+ row = db . SingleById < DefaultValue > ( 1 ) ;
845
+ AssertDefaultValues ( row , new DefaultValue {
846
+ Id = 1 ,
847
+ Bool = false ,
848
+ NBool = null ,
849
+ Int = 0 ,
850
+ NInt = null ,
851
+ String = null ,
852
+ } ) ;
853
+
854
+ db . UpdateOnly < DefaultValue > ( new Dictionary < string , object > {
855
+ [ nameof ( DefaultValue . Id ) ] = 1 ,
856
+ [ nameof ( DefaultValue . Bool ) ] = true ,
857
+ [ nameof ( DefaultValue . NBool ) ] = false ,
858
+ [ nameof ( DefaultValue . Int ) ] = 1 ,
859
+ [ nameof ( DefaultValue . NInt ) ] = 0 ,
860
+ [ nameof ( DefaultValue . String ) ] = "" ,
861
+ } ) ;
862
+
863
+ row = db . SingleById < DefaultValue > ( 1 ) ;
864
+ AssertDefaultValues ( row , new DefaultValue {
865
+ Id = 1 ,
866
+ Bool = true ,
867
+ NBool = false ,
868
+ Int = 1 ,
869
+ NInt = 0 ,
870
+ String = "" ,
871
+ } ) ;
872
+ }
873
+
874
+ [ Test ]
875
+ public async Task Can_update_DefaultValue_Async ( )
876
+ {
877
+ using var db = OpenDbConnection ( ) ;
878
+ db . DropAndCreateTable < DefaultValue > ( ) ;
879
+ AssertDefaultValueFieldTypeDefaultValues ( ) ;
880
+
881
+ var orig = new DefaultValue {
882
+ Id = 1 ,
883
+ Bool = true ,
884
+ NBool = false ,
885
+ Int = 2 ,
886
+ NInt = 0 ,
887
+ String = "A" ,
888
+ } ;
889
+ await db . InsertAsync ( orig ) ;
890
+ var row = await db . SingleByIdAsync < DefaultValue > ( 1 ) ;
891
+ AssertDefaultValues ( row , orig ) ;
892
+
893
+ db . UpdateOnly < DefaultValue > ( new Dictionary < string , object > {
894
+ [ nameof ( DefaultValue . Id ) ] = 1 ,
895
+ [ nameof ( DefaultValue . Bool ) ] = false ,
896
+ [ nameof ( DefaultValue . NBool ) ] = null ,
897
+ [ nameof ( DefaultValue . Int ) ] = 0 ,
898
+ [ nameof ( DefaultValue . NInt ) ] = null ,
899
+ [ nameof ( DefaultValue . String ) ] = null ,
900
+ } ) ;
901
+
902
+ row = await db . SingleByIdAsync < DefaultValue > ( 1 ) ;
903
+ AssertDefaultValues ( row , new DefaultValue {
904
+ Id = 1 ,
905
+ Bool = false ,
906
+ NBool = null ,
907
+ Int = 0 ,
908
+ NInt = null ,
909
+ String = null ,
910
+ } ) ;
911
+
912
+ await db . UpdateOnlyAsync < DefaultValue > ( new Dictionary < string , object > {
913
+ [ nameof ( DefaultValue . Id ) ] = 1 ,
914
+ [ nameof ( DefaultValue . Bool ) ] = true ,
915
+ [ nameof ( DefaultValue . NBool ) ] = false ,
916
+ [ nameof ( DefaultValue . Int ) ] = 1 ,
917
+ [ nameof ( DefaultValue . NInt ) ] = 0 ,
918
+ [ nameof ( DefaultValue . String ) ] = "" ,
919
+ } ) ;
920
+
921
+ row = db . SingleById < DefaultValue > ( 1 ) ;
922
+ AssertDefaultValues ( row , new DefaultValue {
923
+ Id = 1 ,
924
+ Bool = true ,
925
+ NBool = false ,
926
+ Int = 1 ,
927
+ NInt = 0 ,
928
+ String = "" ,
929
+ } ) ;
930
+ }
931
+
932
+ private static void AssertDefaultValueFieldTypeDefaultValues ( )
933
+ {
934
+ var modelDef = typeof ( DefaultValue ) . GetModelMetadata ( ) ;
935
+ Assert . That ( modelDef . GetFieldDefinition ( nameof ( DefaultValue . Int ) ) . FieldTypeDefaultValue ,
936
+ Is . EqualTo ( default ( int ) ) ) ;
937
+ Assert . That ( modelDef . GetFieldDefinition ( nameof ( DefaultValue . NInt ) ) . FieldTypeDefaultValue ,
938
+ Is . EqualTo ( default ( int ? ) ) ) ;
939
+ Assert . That ( modelDef . GetFieldDefinition ( nameof ( DefaultValue . Bool ) ) . FieldTypeDefaultValue ,
940
+ Is . EqualTo ( default ( bool ) ) ) ;
941
+ Assert . That ( modelDef . GetFieldDefinition ( nameof ( DefaultValue . NBool ) ) . FieldTypeDefaultValue ,
942
+ Is . EqualTo ( default ( bool ? ) ) ) ;
943
+ Assert . That ( modelDef . GetFieldDefinition ( nameof ( DefaultValue . String ) ) . FieldTypeDefaultValue ,
944
+ Is . EqualTo ( default ( string ) ) ) ;
945
+ }
946
+
947
+ private void AssertDefaultValues ( DefaultValue row , DefaultValue orig )
948
+ {
949
+ Assert . That ( row . Id , Is . EqualTo ( orig . Id ) ) ;
950
+ Assert . That ( row . Bool , Is . EqualTo ( orig . Bool ) ) ;
951
+ Assert . That ( row . NBool , Is . EqualTo ( orig . NBool ) ) ;
952
+ Assert . That ( row . Int , Is . EqualTo ( orig . Int ) ) ;
953
+ Assert . That ( row . NInt , Is . EqualTo ( orig . NInt ) ) ;
954
+ Assert . That ( row . String , Is . EqualTo ( orig . String ) ) ;
955
+ }
956
+
815
957
}
816
958
817
959
[ CompositeIndex ( "FirstName" , "LastName" ) ]
@@ -830,4 +972,15 @@ public class Shutdown
830
972
public int Id { get ; set ; }
831
973
public bool ? IsShutdownGraceful { get ; set ; }
832
974
}
975
+
976
+ public class DefaultValue
977
+ {
978
+ public int Id { get ; set ; }
979
+ public int Int { get ; set ; }
980
+ public int ? NInt { get ; set ; }
981
+ public bool Bool { get ; set ; }
982
+ public bool ? NBool { get ; set ; }
983
+ public string String { get ; set ; }
984
+ }
985
+
833
986
}
0 commit comments