EF core (MySql) scraffold DB-First not generate FK as class

40 views Asked by At

I develop .Net core API server using .net core 3.1 with Pomelo EF core (for connect Mysql Database)

I using Database First approach for fist release scraffold generate FK attribute as Object property (Ac & Temp)

    public partial class Devices
    {
        public int Id { get; set; }
        public string Mac { get; set; }
        public string Hostname { get; set; }
        public int? AcId { get; set; }
        public int? TempId { get; set; }
        public virtual Ac Ac { get; set; }
        public virtual Temp Temp { get; set; }
    }

But a few month later I re-generate after updated my DB. Scraffold not generate FK as object anymore (I'm not sure I have update Nuget Package or not) I get result look like

public partial class Device
{
    public int Id { get; set; }
    public string Mac { get; set; }
    public string Hostname { get; set; }
    public int? AcId { get; set; }
    public int? TempId { get; set; }
}

I try to googling to find how it been this way

I worry about my api result need to use .Include()

var target = await this.db.Devices.Include(x => x.Ac).Include(x => x.Temp).FirstOrDefaultAsync(x => x.Id == id.Value);
if (target != null)
{
    var viewModel = this.mapper.Map<DeviceViewModel>(target);
    return Ok(viewModel);
}

Anyone know this is my fault or EF scraffold is changed the way to generate class and if its normal how to use .Include()

Thank you.

1

There are 1 answers

0
Chanom First On BEST ANSWER

OK I found solution for my problem. It's my mistake I generate Schema and table by create Model on Mysql Workbench.

When generate schema default option are checked on Skip creation foreign key it's make Scraffold generate my expected result.

So just uncheck.