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

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

我使用 .net core 3.1 和 Pomelo EF core 开发 .Net core API 服务器(用于连接 Mysql 数据库)

我使用 Database First 方法进行第一次发布 scraffold 生成 FK 属性作为对象 属性(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; }
    }

但是几个月后我更新了我的数据库后重新生成了。 Scraffold 不再生成 FK 作为对象(我不确定我是否更新了 Nuget 包)我得到的结果看起来像

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; }
}

我试着用谷歌搜索来找出它是怎么回事

我担心我的 api 结果需要使用 .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);
}

任何人都知道这是我的错或 EF 脚手架改变了生成方式 class 以及如果它正常如何使用 .Include()

谢谢。

好的,我找到了解决问题的方法。我通过在 Mysql Workbench.

上创建模型来生成架构和 table 是我的错误

当勾选生成模式默认选项时 Skip creation foreign key 它使 Scraffold 生成我预期的结果。

所以取消选中。