@@ -297,6 +297,50 @@ await Test(
297297);" ) ;
298298 }
299299
300+ [ Fact ]
301+ public virtual async Task Create_table_with_string_list_column ( )
302+ {
303+ await Test (
304+ _ => { } ,
305+ builder => builder . Entity (
306+ "People" , e =>
307+ {
308+ e . Property < int > ( "Id" ) ;
309+ e . HasKey ( "Id" ) ;
310+ e . Property < List < string > > ( "Values" ) ;
311+ } ) ,
312+ asserter : null ) ; // We don't scaffold unlogged
313+
314+ AssertSql (
315+ @"CREATE TABLE ""People"" (
316+ ""Id"" integer GENERATED BY DEFAULT AS IDENTITY,
317+ ""Values"" text[] NULL,
318+ CONSTRAINT ""PK_People"" PRIMARY KEY (""Id"")
319+ );" ) ;
320+ }
321+
322+ [ Fact ]
323+ public virtual async Task Create_table_with_required_int_array_column ( )
324+ {
325+ await Test (
326+ _ => { } ,
327+ builder => builder . Entity (
328+ "People" , e =>
329+ {
330+ e . Property < int > ( "Id" ) ;
331+ e . HasKey ( "Id" ) ;
332+ e . Property < int [ ] > ( "Values" ) . IsRequired ( ) ;
333+ } ) ,
334+ asserter : null ) ; // We don't scaffold unlogged
335+
336+ AssertSql (
337+ @"CREATE TABLE ""People"" (
338+ ""Id"" integer GENERATED BY DEFAULT AS IDENTITY,
339+ ""Values"" integer[] NOT NULL,
340+ CONSTRAINT ""PK_People"" PRIMARY KEY (""Id"")
341+ );" ) ;
342+ }
343+
300344 public override async Task Drop_table ( )
301345 {
302346 await base . Drop_table ( ) ;
@@ -683,6 +727,28 @@ await Test(
683727 }
684728#pragma warning restore CS0618
685729
730+ [ Fact ]
731+ public virtual async Task Add_string_list_column_with_default ( )
732+ {
733+ await Test (
734+ builder => builder . Entity (
735+ "People" , e =>
736+ {
737+ e . Property < int > ( "Id" ) ;
738+ e . HasKey ( "Id" ) ;
739+ } ) ,
740+ _ => { } ,
741+ builder => builder . Entity (
742+ "People" , e =>
743+ {
744+ e . Property < List < string > > ( "Values" ) . HasDefaultValue ( new [ ] { "1" , "2" } . ToList ( ) ) ;
745+ } ) ,
746+ asserter : null ) ; // We don't scaffold unlogged
747+
748+ AssertSql (
749+ @"ALTER TABLE ""People"" ADD ""Values"" text[] NULL DEFAULT ARRAY['1','2']::text[];" ) ;
750+ }
751+
686752 public override async Task Add_column_shared ( )
687753 {
688754 await base . Add_column_shared ( ) ;
@@ -2553,6 +2619,43 @@ SELECT setval(
25532619 false);" ) ;
25542620 }
25552621
2622+ [ ConditionalFact ]
2623+ public virtual async Task InsertDataOperation_StringList ( )
2624+ {
2625+ await Test (
2626+ builder =>
2627+ {
2628+ builder . Entity (
2629+ "Person" , e =>
2630+ {
2631+ e . Property < int > ( "Id" ) ;
2632+ e . Property < List < string > > ( "Values" ) ;
2633+ e . HasKey ( "Id" ) ;
2634+ } ) ;
2635+ } ,
2636+ _ => { } ,
2637+ builder =>
2638+ {
2639+ builder . Entity ( "Person" ) . HasData (
2640+ new { Id = 1 , Values = new List < string > { "1" , "2" } } ,
2641+ new { Id = 2 , Values = new List < string > { "2" , "3" } } ) ;
2642+ } ,
2643+ _ => { } ) ;
2644+
2645+ AssertSql (
2646+ @"INSERT INTO ""Person"" (""Id"", ""Values"")
2647+ VALUES (1, ARRAY['1','2']::text[]);
2648+ INSERT INTO ""Person"" (""Id"", ""Values"")
2649+ VALUES (2, ARRAY['2','3']::text[]);" ,
2650+ //
2651+ @"SELECT setval(
2652+ pg_get_serial_sequence('""Person""', 'Id'),
2653+ GREATEST(
2654+ (SELECT MAX(""Id"") FROM ""Person"") + 1,
2655+ nextval(pg_get_serial_sequence('""Person""', 'Id'))),
2656+ false);" ) ;
2657+ }
2658+
25562659 #endregion
25572660
25582661 #region PostgreSQL extensions
0 commit comments