@@ -121,6 +121,11 @@ public class AllTypesNeverCreatedEntity : Entity
121121
122122 [ Field ]
123123 public TimeSpan ? FNTimeSpan { get ; set ; }
124+
125+ public AllTypesNeverCreatedEntity ( Session session )
126+ : base ( session )
127+ {
128+ }
124129 }
125130
126131 [ Serializable ]
@@ -135,6 +140,11 @@ public class DateTimeOffsetNeverCreatedEntity : Entity
135140
136141 [ Field ]
137142 public DateTimeOffset ? FNDateTimeOffset { get ; set ; }
143+
144+ public DateTimeOffsetNeverCreatedEntity ( Session session )
145+ : base ( session )
146+ {
147+ }
138148 }
139149
140150 [ Serializable ]
@@ -149,6 +159,39 @@ public class PgSqlTypesNeverCreatedEntity : Entity
149159
150160 [ Field ]
151161 public NpgsqlTypes . NpgsqlPoint ? FNPoint { get ; set ; }
162+
163+ public PgSqlTypesNeverCreatedEntity ( Session session )
164+ : base ( session )
165+ {
166+ }
167+ }
168+
169+ public struct PropsStruct
170+ {
171+ public int IntField { get ; set ; }
172+
173+ public long LongField { get ; set ; }
174+ }
175+
176+ public struct PropsWrongStruct
177+ {
178+ public int IntField { get ; set ; }
179+
180+ public Tuple < int > TupleField { get ; set ; }
181+ }
182+
183+ public struct FieldsStruct
184+ {
185+ public int IntField ;
186+
187+ public long LongField ;
188+ }
189+
190+ public struct FieldsWrongStruct
191+ {
192+ public int IntField ;
193+
194+ public Tuple < int > TupleField ;
152195 }
153196}
154197
@@ -805,6 +848,38 @@ public async Task ValueTupleTestAsync()
805848 Assert . That ( Domain . QueryCache . Count , Is . EqualTo ( countBefore + 1 ) ) ;
806849 }
807850
851+ [ Test ]
852+ public void CustomStructTest ( )
853+ {
854+ var countBefore = Domain . QueryCache . Count ;
855+
856+ using var session = Domain . OpenSession ( ) ;
857+ using var tx = session . OpenTransaction ( ) ;
858+ Query ( session , new PropsStruct ( ) { IntField = 10 , LongField = 100 } ) ;
859+
860+ Assert . That ( Domain . QueryCache . Count , Is . EqualTo ( countBefore + 1 ) ) ;
861+
862+ Query ( session , new FieldsStruct ( ) { IntField = 10 , LongField = 100 } ) ;
863+
864+ Assert . That ( Domain . QueryCache . Count , Is . EqualTo ( countBefore + 2 ) ) ;
865+ }
866+
867+ [ Test ]
868+ public async Task CustomStructTestAsync ( )
869+ {
870+ var countBefore = Domain . QueryCache . Count ;
871+
872+ await using var session = await Domain . OpenSessionAsync ( ) ;
873+ await using var tx = await session . OpenTransactionAsync ( ) ;
874+ await QueryAsync ( session , new PropsStruct ( ) { IntField = 10 , LongField = 100 } ) ;
875+
876+ Assert . That ( Domain . QueryCache . Count , Is . EqualTo ( countBefore + 1 ) ) ;
877+
878+ await QueryAsync ( session , new FieldsStruct ( ) { IntField = 10 , LongField = 100 } ) ;
879+
880+ Assert . That ( Domain . QueryCache . Count , Is . EqualTo ( countBefore + 2 ) ) ;
881+ }
882+
808883 #region General types
809884
810885 private void Query ( Session session , bool value ) =>
@@ -1039,6 +1114,19 @@ private void Query(Session session, NpgsqlTypes.NpgsqlPoint? value) =>
10391114 private async Task QueryAsync ( Session session , NpgsqlTypes . NpgsqlPoint ? value ) =>
10401115 _ = await session . Query . ExecuteAsync ( q => q . All < PgSqlTypesNeverCreatedEntity > ( ) . Where ( e => e . FNPoint == value ) ) ;
10411116
1117+
1118+ private void Query ( Session session , PropsStruct value ) =>
1119+ _ = session . Query . Execute ( q => q . All < AllTypesNeverCreatedEntity > ( ) . Where ( e => e . FInt == value . IntField || e . FLong == value . LongField ) ) ;
1120+
1121+ private async Task QueryAsync ( Session session , PropsStruct value ) =>
1122+ _ = await session . Query . ExecuteAsync ( q => q . All < AllTypesNeverCreatedEntity > ( ) . Where ( e => e . FInt == value . IntField || e . FLong == value . LongField ) ) ;
1123+
1124+ private void Query ( Session session , FieldsStruct value ) =>
1125+ _ = session . Query . Execute ( q => q . All < AllTypesNeverCreatedEntity > ( ) . Where ( e => e . FInt == value . IntField || e . FLong == value . LongField ) ) ;
1126+
1127+ private async Task QueryAsync ( Session session , FieldsStruct value ) =>
1128+ _ = await session . Query . ExecuteAsync ( q => q . All < AllTypesNeverCreatedEntity > ( ) . Where ( e => e . FInt == value . IntField || e . FLong == value . LongField ) ) ;
1129+
10421130 #endregion
10431131 }
10441132}
0 commit comments