1- using LinqToDB ;
2- using LinqToDB . Data ;
3- using LinqToDB . Mapping ;
4- using Internal ;
1+ using Internal ;
52using Linq2db . Ydb ;
63using Linq2db . Ydb . Internal ;
4+ using LinqToDB ;
75using LinqToDB . Async ;
6+ using LinqToDB . Data ;
7+ using LinqToDB . Mapping ;
88
99namespace Linq2db ;
1010
@@ -18,16 +18,10 @@ static SloTableContext()
1818 DataConnection . AddProviderDetector ( YdbTools . ProviderDetector ) ;
1919 }
2020
21- public sealed class Linq2dbClient
21+ public sealed class Linq2dbClient ( string connectionString )
2222 {
23- private readonly string _connectionString ;
24-
25- public Linq2dbClient ( string connectionString )
26- {
27- _connectionString = connectionString ;
28- }
29-
30- public DataConnection Open ( ) => new ( "YDB" , _connectionString ) ;
23+ public DataConnection Open ( )
24+ => new ( new DataOptions ( ) . UseConnectionString ( "YDB" , connectionString ) ) ;
3125 }
3226
3327 protected override Linq2dbClient CreateClient ( Config config ) => new ( config . ConnectionString ) ;
@@ -38,14 +32,14 @@ protected override async Task Create(Linq2dbClient client, int operationTimeout)
3832 db . CommandTimeout = operationTimeout ;
3933
4034 await db . ExecuteAsync ( $@ "
41- CREATE TABLE `{ SloTable . Name } ` (
42- Guid Uuid,
43- Id Int32,
44- PayloadStr Text,
45- PayloadDouble Double,
46- PayloadTimestamp Timestamp,
47- PRIMARY KEY (Guid, Id)
48- )" ) ;
35+ CREATE TABLE `{ SloTable . Name } ` (
36+ Guid Uuid,
37+ Id Int32,
38+ PayloadStr Text,
39+ PayloadDouble Double,
40+ PayloadTimestamp Timestamp,
41+ PRIMARY KEY (Guid, Id)
42+ )") ;
4943
5044 await db . ExecuteAsync ( SloTable . Options ) ;
5145 }
@@ -77,7 +71,20 @@ protected override async Task<int> Save(Linq2dbClient client, SloTable sloTable,
7771 db . CommandTimeout = readTimeout ;
7872
7973 var t = db . GetTable < SloRow > ( ) ;
80- return await t . FirstOrDefaultAsync ( r => r . Guid == select . Guid && r . Id == select . Id ) ;
74+
75+ var row = await t
76+ . Where ( r => r . Guid == select . Guid && r . Id == select . Id )
77+ . Select ( r => new
78+ {
79+ r . Guid ,
80+ r . Id ,
81+ r . PayloadStr ,
82+ r . PayloadDouble ,
83+ r . PayloadTimestamp
84+ } )
85+ . FirstOrDefaultAsync ( ) ;
86+
87+ return row ;
8188 }
8289
8390 protected override async Task < int > SelectCount ( Linq2dbClient client )
@@ -87,12 +94,12 @@ protected override async Task<int> SelectCount(Linq2dbClient client)
8794 }
8895
8996 [ Table ( SloTable . Name ) ]
90- private sealed class SloRow
97+ private sealed class SloRow ( Guid guid , int id , string ? payloadStr , double payloadDouble , DateTime payloadTimestamp )
9198 {
92- [ Column ] public Guid Guid { get ; set ; }
93- [ Column ] public int Id { get ; set ; }
94- [ Column ] public string ? PayloadStr { get ; set ; }
95- [ Column ] public double PayloadDouble { get ; set ; }
96- [ Column ] public DateTime PayloadTimestamp { get ; set ; }
99+ [ Column ] public Guid Guid { get ; } = guid ;
100+ [ Column ] public int Id { get ; } = id ;
101+ [ Column ] public string ? PayloadStr { get ; } = payloadStr ;
102+ [ Column ] public double PayloadDouble { get ; } = payloadDouble ;
103+ [ Column ] public DateTime PayloadTimestamp { get ; } = payloadTimestamp ;
97104 }
98105}
0 commit comments