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 生成我预期的结果。
所以取消选中。
我使用 .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 生成我预期的结果。
所以取消选中。