Bug #94343 EF6 Code first - table schemas are lost, but automatic migrations uses them
| Submitted: | 15 Feb 2019 11:33 | Modified: | 24 Jul 2020 17:20 |
|---|---|---|---|
| Reporter: | Spartak Timchev | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | Connector / NET | Severity: | S2 (Serious) |
| Version: | 6.9.12, 8.0.15 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | EF6, entityframework | ||
[24 Jul 2020 17:20]
Christine Cole
Posted by developer: Fixed as of the upcoming MySQL Connector/NET 8.0.22 release, and here's the proposed changelog entry from the documentation team: Entity Framework code-first migration omitted the schema attribute that was assigned to an entity, although the automatic migration appeared to generate a table with the proper schema value at first. Subsequent queries using the schema name returned errors. Thank you for the bug report.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.049 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.
Description: In Code first, When both table name and schema are used in entity's attribute, for example [Table("table1", Schema = "myschema")], automatic migrations do respect the table schema name, creating table with name "myschema.table1", but when, after initial creation of database by automatic migrations, I am trying to get/insert/delete records in this table using EF6, an exception is thrown, and from what can be seen from the log, the error description is: "-- Failed in 2 ms with error: Table 'mydb.table1' doesn't exist" Obviously, the EF6 part of the connector/net does not respect table schemas at all. It should look for "mydb.myschema.table1" instead. This was OK in 6.9.9 version. How to repeat: 1. Create code first project for EF6. 2. Enable automatic migrations 3. Create the folowing Entity: [Table("table1", Schema = "myschema")] public class MyEntity { public int ID {get;set;} public int Name {get;set;} } 4. Create DBContext derived class with DbSet for table as follows: public class MyDbContext : DbContext { public DbSet<MyEntity> TestTable {get;set;} } 5. Try to use the above context for accessing the database and put records in TestTable dbset. Suggested fix: EF6 part of the MySql Connector/.Net must respect table schemas both in automatic migrations and normal use.