| Bug #84423 | .net core - TableAttribute doesn't work, but .ToTable() works | ||
|---|---|---|---|
| Submitted: | 5 Jan 2017 17:24 | Modified: | 16 May 2017 22:34 |
| Reporter: | Avi Kenjale | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | Connector / NET | Severity: | S3 (Non-critical) |
| Version: | 6.10.0 | OS: | Windows (any) |
| Assigned to: | Gabriela Martinez Sanchez | CPU Architecture: | Any |
[9 Jan 2017 20:34]
Gabriela Martinez Sanchez
Could you please give it a try with this version https://www.nuget.org/packages/MySql.Data.EntityFrameworkCore/6.10.0-alpha ? The 7.0.6-ir31 does not support the latest EF Core version.
[9 Jan 2017 21:25]
Avi Kenjale
I tried. No luck. Still having same issue.
[9 Jan 2017 21:26]
Avi Kenjale
Exception message: Table 'world.countries' doesn't exist
[16 May 2017 22:34]
Christine Cole
Posted by developer: Fixed as of the upcoming MySQL Connector/NET 6.10.2 release, and here's the changelog entry: EF Core: Using System.ComponentModel.DataAnnotations.Schema.TableAttribute to initialize a new class instance that specified the name of an existing MySQL table produced incorrect table name and column name mappings. Thank you for the bug report.

Description: Note: I am using MySQL & its sample database 'World' Project.json "frameworks": { "netstandard1.6": { "dependencies": { "NETStandard.Library": "1.6.1", "MySQL.Data.EntityFrameworkCore":"7.0.6-ir31" } } } Model: using System.ComponentModel.DataAnnotations.Schema; [Table("Country")] // This is actual table name in database public class Countries { [Key] public string Code { get; set; } public string Name { get; set; } public string Continent { get; set; } public string Region { get; set; } public int IndepYear { get; set; } } DbContext: public class WorldContext : DbContext { DbSet<Countries> Countries {get;set;} protected override void OnConfiguring(DbContextOptionsBuilder optionBuilder) { optionBuilder.UseMySQL("server=localhost;userid=root;pwd=Newuser123;port=3306;database=world;sslmode=none;"); } } When I write code to fill & fetch Countries using linq, I am getting error like 'Countries' table does not exist. However, when I comment the [Table("Country")] from model class, and add following code under context class, it works: protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Countries>() .ToTable("Country"); } NOTE: created issue for same on github - https://github.com/aspnet/EntityFramework/issues/7319 How to repeat: Detailed steps provided in description Suggested fix: I tried changing MySQL native package to "Pomelo.EntityFrameworkCore.MySql": "1.1.1-prerelease-10009", and TableAttribute works.