Code First: Error seeding data when Table is created in same migration.
-----------------------------------------------------------------------

                 Key: DNET-1003
                 URL: http://tracker.firebirdsql.org/browse/DNET-1003
             Project: .NET Data provider
          Issue Type: Bug
          Components: Entity Framework Core
    Affects Versions: 7.10.1.0
            Reporter: Giacomo Policicchio
            Assignee: Jiri Cincura
            Priority: Minor


Due to Firebird behavior, in same transaction is not possible to insert data in 
a newly created Table. So, using Entity.HasData in OnModelCreating in same 
Migration where the table is created, an error is raised and migration fails.
Scripting the migration instead of applying it with update-database confirms my 
supects, the structure is:

START TRANSACTION;
DDL statements
HasData DML statements
Insert into 'MigrationsHistoryTable'
COMMIT;

First solution that came to my mind reading the code could be to wrap relevant 
DDL statemens between "set autoddl on;" and "set audoddl off" statements, e.g. 
in "Migrations/FbMigrationsSqlGenerator,cs",  method  
"Generate(CreateTableOperation....", it would be easy to add these statements, 
maybe adding a flag in FbOptionsExtension to preserve default original behavior.
But this solution is too dirty, because if for any reason migration fails, DDL 
command are executed partially needing to manually recover, if possible, prior 
database state.  So the ideal solution instead would be to inject a "commit" 
and a "start transaction" between ddl and dml commands, so the only risks will 
be related to DML failing for any reason, but a fail like that could easily 
recovered. For this soultion I've to study more EF Core internal processes.
What do you thinK?

Bye







-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


_______________________________________________
Firebird-net-provider mailing list
Firebird-net-provider@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/firebird-net-provider

Reply via email to