Open DanBrooker opened 7 years ago
Hello Dan,
Would you try again with the --verbose parameter and copy the output please ?
Take not that major enhancements will be available soon once this project will be completely merged at https://github.com/cincuranet/FirebirdSql.Data.FirebirdClient/pull/70
Here's the bit you're probably looking for:
GetConstraints
GetConstraints => Table ACCFILTER => 0
PK ==> Table ACCFILTERITEM => FK_ACCFILTERITM_ID, PrincipalTable ACCFILTER, ACCFILTERID#0, ACCFILTERID#0
GetConstraints => Table ACCFILTERITEM => 1
PK ==> Table ACCOUNT => FK_ACCT_LOGINID, PrincipalTable WBLOGIN, LOGINID#0, LOGINID#0
PK ==> Table ACCOUNT => FK_ACCT_PERORGID, PrincipalTable PERORG, PERORGID#0, PERORGID#0
PK ==> Table ACCOUNT => FK_ACCT_TYPEID, PrincipalTable ACCTYPE, ACCOUNTTYPEID#0, ACCOUNTTYPEID#0
GetConstraints => Table ACCOUNT => 3
PK ==> Table ACCOUNTTRANSACTION => FK_ACCTRANS_LOGINID, PrincipalTable WBLOGIN, WHOTRANSACTION#0, LOGINID#0
System.InvalidOperationException: Sequence contains no matching element
at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source, Func`2 predicate)
Thanks, indeed that's helping a lot.
Hi Here is a sql script to create two small tables and reproduce the problem:
` SET SQL DIALECT 3;
--drop table roms; --drop table games;
/**/ / Tables / /**/ RECREATE TABLE ROMS ( ROMID INTEGER NOT NULL, GAMEIDENT INTEGER );
RECREATE TABLE GAMES ( GAMEID INTEGER NOT NULL );
/**/ / Primary keys / /**/ ALTER TABLE GAMES ADD PRIMARY KEY (GAMEID); ALTER TABLE ROMS ADD PRIMARY KEY (ROMID);
/**/ / Foreign keys / /**/ ALTER TABLE ROMS ADD CONSTRAINT FK_ROMS_1 FOREIGN KEY (GAMEIDENT) REFERENCES GAMES (GAMEID); `
And now the scaffold command:
`Scaffold-DbContext "User=SYSDBA;Password=masterkey;Database=c:/temp/db.bin; DataSource=127.0.0.1;Port=3050;" SouchProd.EntityFrameworkCore.Firebird
GetTables
GetTables => Add ROMS.
GetTables => Add GAMES.
GetColumns
GetColumns => 2 columns for table ROMS
GetColumns => 1 columns for table GAMES
GetPrimaryKeys
GetPrimaryKeys => pk for table ROMS found => RDB$PRIMARY30 with columns ROMID
GetPrimaryKeys => pk for table GAMES found => RDB$PRIMARY29 with columns GAMEID
GetIndexes
GetIndexes => Table ROMS => 0 index found
GetIndexes => Table GAMES => 0 index found
GetConstraints
PK ==> Table ROMS => FK_ROMS_1, PrincipalTable GAMES, GAMEIDENT#0, GAMEID#0
System.InvalidOperationException: Sequence contains no matching element
at System.Linq.Enumerable.Single[TSource](IEnumerable1 source, Func
2 predicate)
at Microsoft.EntityFrameworkCore.Scaffolding.Internal.FirebirdDatabaseModelFactory.GetConstraints()
at Microsoft.EntityFrameworkCore.Scaffolding.Internal.FirebirdDatabaseModelFactory.Create(DbConnection connection, TableSelectionSet tableSelectionSet)
at Microsoft.EntityFrameworkCore.Scaffolding.Internal.FirebirdDatabaseModelFactory.Create(DbConnection connection, IEnumerable1 tables, IEnumerable
1 schemas)
at Microsoft.EntityFrameworkCore.Scaffolding.Internal.FirebirdDatabaseModelFactory.Create(String connectionString, IEnumerable1 tables, IEnumerable
1 schemas)
at Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineerScaffolder.ScaffoldModel(String connectionString, IEnumerable1 tables, IEnumerable
1 schemas, String namespace, String language, String contextDir, String contextName, ModelReverseEngineerOptions modelOptions, ModelCodeGenerationOptions codeOptions)
at Microsoft.EntityFrameworkCore.Design.Internal.DatabaseOperations.ScaffoldContext(String provider, String connectionString, String outputDir, String outputContextDir, String dbContextClassName, IEnumerable1 schemas, IEnumerable
1 tables, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContextImpl(String provider, String connectionString, String outputDir, String outputDbContextDir, String dbContextClassName, IEnumerable1 schemaFilters, IEnumerable
1 tableFilters, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContext.<>cDisplayClass0_1.<.ctor>b0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>cDisplayClass3_0`1.
Steps to reproduce
Ideally include a complete code listing that we can run to reproduce the issue. Alternatively, you can provide a project/solution that we can run.
Run the scaffold command.
dotnet ef dbcontext scaffold "User=SYSDBA;Password=.....;Database=/var/lib/firebird/2.5/data/otdata.fdb;DataSource=127.0.0.1;Port=3050;Dialect=3;Charset=UTF8;Role=;Connection lifetime=15;Pooling=true;MinPoolSize=0;MaxPoolSize=50;Packet Size=8192;ServerType=0;" "souchprod.EntityFrameworkCore.Firebird"
The issue
Exception when running command:
Further technical details
Firebird version: 2.5 Operating system: OSX 10.7 SouchProd.EntityFrameworkCore.Firebird version: 2.0.7
Other details about my project setup: netcoreapp2.0 Docker based Firebird https://github.com/almeida/docker-firebird