1
- using FreeSql . DataAnnotations ;
1
+ using FreeSql . DataAnnotations ;
2
2
using NetTopologySuite . Geometries ;
3
3
using Newtonsoft . Json ;
4
4
using Newtonsoft . Json . Linq ;
11
11
using System . Linq ;
12
12
using System . Net ;
13
13
using System . Net . NetworkInformation ;
14
+ using System . Numerics ;
14
15
using System . Text ;
16
+ using System . Text . RegularExpressions ;
15
17
using Xunit ;
16
18
17
19
namespace FreeSql . Tests . PostgreSQL . NetTopologySuite
18
20
{
19
21
public class PostgreSQLCodeFirstTest
20
22
{
21
23
24
+ [ Fact ]
25
+ public void UInt256Crud2 ( )
26
+ {
27
+ var fsql = g . pgsql ;
28
+ fsql . Aop . AuditDataReader += ( _ , e ) =>
29
+ {
30
+ var dbtype = e . DataReader . GetDataTypeName ( e . Index ) ;
31
+ var m = Regex . Match ( dbtype , @"numeric\((\d+)\)" , RegexOptions . IgnoreCase ) ;
32
+ if ( m . Success && int . Parse ( m . Groups [ 1 ] . Value ) > 19 )
33
+ e . Value = e . DataReader . GetFieldValue < BigInteger > ( e . Index ) ; //否则会报溢出错误
34
+ } ;
35
+
36
+ var num = BigInteger . Parse ( "57896044618658097711785492504343953926634992332820282019728792003956564819968" ) ;
37
+ fsql . Delete < tuint256tb_01 > ( ) . Where ( "1=1" ) . ExecuteAffrows ( ) ;
38
+ Assert . Equal ( 1 , fsql . Insert ( new tuint256tb_01 ( ) ) . ExecuteAffrows ( ) ) ;
39
+ var find = fsql . Select < tuint256tb_01 > ( ) . ToList ( ) ;
40
+ Assert . Single ( find ) ;
41
+ Assert . Equal ( "0" , find [ 0 ] . Number . ToString ( ) ) ;
42
+ var item = new tuint256tb_01 { Number = num } ;
43
+ Assert . Equal ( 1 , fsql . Insert ( item ) . ExecuteAffrows ( ) ) ;
44
+ find = fsql . Select < tuint256tb_01 > ( ) . Where ( a => a . Id == item . Id ) . ToList ( ) ;
45
+ Assert . Single ( find ) ;
46
+ Assert . Equal ( item . Number , find [ 0 ] . Number ) ;
47
+ num = num - 1 ;
48
+ item . Number = num ;
49
+ Assert . Equal ( 1 , fsql . Update < tuint256tb_01 > ( ) . SetSource ( item ) . ExecuteAffrows ( ) ) ;
50
+ find = fsql . Select < tuint256tb_01 > ( ) . Where ( a => a . Id == item . Id ) . ToList ( ) ;
51
+ Assert . Single ( find ) ;
52
+ Assert . Equal ( "57896044618658097711785492504343953926634992332820282019728792003956564819967" , find [ 0 ] . Number . ToString ( ) ) ;
53
+
54
+ num = BigInteger . Parse ( "57896044618658097711785492504343953926634992332820282019728792003956564819968" ) ;
55
+ fsql . Delete < tuint256tb_01 > ( ) . Where ( "1=1" ) . ExecuteAffrows ( ) ;
56
+ Assert . Equal ( 1 , fsql . Insert ( new tuint256tb_01 ( ) ) . NoneParameter ( ) . ExecuteAffrows ( ) ) ;
57
+ find = fsql . Select < tuint256tb_01 > ( ) . ToList ( ) ;
58
+ Assert . Single ( find ) ;
59
+ Assert . Equal ( "0" , find [ 0 ] . Number . ToString ( ) ) ;
60
+ item = new tuint256tb_01 { Number = num } ;
61
+ Assert . Equal ( 1 , fsql . Insert ( item ) . NoneParameter ( ) . ExecuteAffrows ( ) ) ;
62
+ find = fsql . Select < tuint256tb_01 > ( ) . Where ( a => a . Id == item . Id ) . ToList ( ) ;
63
+ Assert . Single ( find ) ;
64
+ Assert . Equal ( item . Number , find [ 0 ] . Number ) ;
65
+ num = num - 1 ;
66
+ item . Number = num ;
67
+ Assert . Equal ( 1 , fsql . Update < tuint256tb_01 > ( ) . NoneParameter ( ) . SetSource ( item ) . ExecuteAffrows ( ) ) ;
68
+ find = fsql . Select < tuint256tb_01 > ( ) . Where ( a => a . Id == item . Id ) . ToList ( ) ;
69
+ Assert . Single ( find ) ;
70
+ Assert . Equal ( "57896044618658097711785492504343953926634992332820282019728792003956564819967" , find [ 0 ] . Number . ToString ( ) ) ;
71
+ }
72
+ class tuint256tb_01
73
+ {
74
+ public Guid Id { get ; set ; }
75
+ public BigInteger Number { get ; set ; }
76
+ }
77
+
22
78
[ Fact ]
23
79
public void GetComparisonDDLStatements ( )
24
80
{
25
81
var sql = g . pgsql . CodeFirst . GetComparisonDDLStatements < TableAllType > ( ) ;
26
- Assert . True ( string . IsNullOrEmpty ( sql ) ) ; //测试运行两次后
82
+ Assert . True ( string . IsNullOrEmpty ( sql ) ) ; //测试运行两次后
27
83
g . pgsql . Select < TableAllType > ( ) ;
28
84
}
29
85
@@ -43,8 +99,8 @@ public void CurdAllField()
43
99
44
100
var item2 = new TableAllType
45
101
{
46
- testFieldBitArray = new BitArray ( Encoding . UTF8 . GetBytes ( "我是" ) ) ,
47
- testFieldBitArrayArray = new [ ] { new BitArray ( Encoding . UTF8 . GetBytes ( "中国" ) ) , new BitArray ( Encoding . UTF8 . GetBytes ( "公民" ) ) } ,
102
+ testFieldBitArray = new BitArray ( Encoding . UTF8 . GetBytes ( "我是" ) ) ,
103
+ testFieldBitArrayArray = new [ ] { new BitArray ( Encoding . UTF8 . GetBytes ( "中国" ) ) , new BitArray ( Encoding . UTF8 . GetBytes ( "公民" ) ) } ,
48
104
testFieldBool = true ,
49
105
testFieldBoolArray = new [ ] { true , true , false , false } ,
50
106
testFieldBoolArrayNullable = new bool ? [ ] { true , true , null , false , false } ,
@@ -53,8 +109,8 @@ public void CurdAllField()
53
109
testFieldByteArray = new byte [ ] { 0 , 1 , 2 , 3 , 4 , 5 , 6 } ,
54
110
testFieldByteArrayNullable = new byte ? [ ] { 0 , 1 , 2 , 3 , null , 4 , 5 , 6 } ,
55
111
testFieldByteNullable = byte . MinValue ,
56
- testFieldBytes = Encoding . UTF8 . GetBytes ( "我是中国人" ) ,
57
- testFieldBytesArray = new [ ] { Encoding . UTF8 . GetBytes ( "我是中国人" ) , Encoding . UTF8 . GetBytes ( "我是中国人" ) } ,
112
+ testFieldBytes = Encoding . UTF8 . GetBytes ( "我是中国人" ) ,
113
+ testFieldBytesArray = new [ ] { Encoding . UTF8 . GetBytes ( "我是中国人" ) , Encoding . UTF8 . GetBytes ( "我是中国人" ) } ,
58
114
testFieldCidr = ( IPAddress . Parse ( "10.0.0.0" ) , 8 ) ,
59
115
testFieldCidrArray = new [ ] { ( IPAddress . Parse ( "10.0.0.0" ) , 8 ) , ( IPAddress . Parse ( "192.168.0.0" ) , 16 ) } ,
60
116
testFieldCidrArrayNullable = new ( IPAddress , int ) ? [ ] { ( IPAddress . Parse ( "10.0.0.0" ) , 8 ) , null , ( IPAddress . Parse ( "192.168.0.0" ) , 16 ) } ,
@@ -229,9 +285,9 @@ public void CurdAllField()
229
285
testFieldShortArray = new short [ ] { 1 , 2 , 3 , 4 , 5 } ,
230
286
testFieldShortArrayNullable = new short ? [ ] { 1 , 2 , 3 , null , 4 , 5 } ,
231
287
testFieldShortNullable = short . MinValue ,
232
- testFieldString = "我是中国人string'\\ ?!@#$%^&*()_+{}}{~?><<>" ,
288
+ testFieldString = "我是中国人string'\\ ?!@#$%^&*()_+{}}{~?><<>" ,
233
289
testFieldChar = 'X' ,
234
- testFieldStringArray = new [ ] { "我是中国人String1" , "我是中国人String2" , null , "我是中国人String3" } ,
290
+ testFieldStringArray = new [ ] { "我是中国人String1" , "我是中国人String2" , null , "我是中国人String3" } ,
235
291
testFieldTimeSpan = TimeSpan . FromDays ( 1 ) ,
236
292
testFieldTimeSpanArray = new [ ] { TimeSpan . FromDays ( 1 ) , TimeSpan . FromSeconds ( 10 ) , TimeSpan . FromSeconds ( 60 ) } ,
237
293
testFieldTimeSpanArrayNullable = new TimeSpan ? [ ] { TimeSpan . FromDays ( 1 ) , TimeSpan . FromSeconds ( 10 ) , null , TimeSpan . FromSeconds ( 60 ) } ,
0 commit comments