【问题标题】:Concerns with Seeding Data in .NET Core 3.1.NET Core 3.1 中的种子数据问题
【发布时间】:2020-11-08 03:35:12
【问题描述】:

请问我对 Microsoft 网站上的此链接有疑问,该网站提供了如何播种数据的示例:

https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro?view=aspnetcore-3.1

在播种数据时,没有为成员分配任何 ID,并且在成员模型中,使用了 [DatabaseGenerated(DatabaseGeneratedOption.None)] 注释,这意味着我们将自己输入 ID 的数据值。那么,应用程序如何知道哪个成员与注册实体中的哪个 memberid(外键)匹配。

【问题讨论】:

  • 我想我找到了答案。 [DatabaseGenerated(DatabaseGeneratedOption.None)] 注释未在学生实体中指示。因此,它将自动生成数字本身。是否意味着自动生成从图1开始?
  • 构造函数中的类对象将属性设置为默认值。如果你需要一个不同的值,你需要一个构造函数来设置值。
  • @jdweng 教程中的类上下文是 SchoolContext 并且没有将属性设置为默认值的地方,或者这是否意味着 1 开箱即用作为默认值的起始值。假设我想要一个不同的值,例如,我希望数字从 100 开始,请问我该如何实现。
  • 请阅读官方 EF Core 文档的Data Seeding 部分。您必须提供明确的主键和外键值,无论它们是否通常是自动生成的。
  • 类属性将有一个默认值,例如 int 设置为零,而 string 设置为空字符串。 Ivan 的链接将属性设置为默认构造函数值以外的值。

标签: c# entity-framework entity-framework-core seeding


【解决方案1】:

如果您询问如何在 EF 模型中显示关系,请查看此示例:

    [Table("AppUserInRole")]
    public partial class AppUserInRole
    {
        [Key]
        public int Id { get; set; }
        public int UserId { get; set; }
        public short RoleId { get; set; }

        [ForeignKey(nameof(RoleId))]
        [InverseProperty(nameof(AppRole.AppUserInRoles))]
        public virtual AppRole Role { get; set; }
        [ForeignKey(nameof(UserId))]
        [InverseProperty(nameof(AppUserInfo.AppUserInRoles))]
        public virtual AppUserInfo User { get; set; }
    }

在这个示例中,我们有 3 个表格和 3 个模型。 AppUserInRole 与 AppUserInfo 和 AppRole 有关系。

【讨论】:

    猜你喜欢
    • 2020-07-30
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    相关资源
    最近更新 更多