当前位置: 首页 > 知识库问答 >
问题:

Entity Famework从对象创建列

秦雅逸
2023-03-14

当我试图在我的用户之间创建reation时,我遇到了一个问题。一个用户可以是另一个用户的营养师,所以我有这样的结构:

public class ApplicationUser : IdentityUser
{
        [ForeignKey("MenteeId")]
        public virtual ICollection<MenteesDieticians> Dieticians { get; set; }

        [ForeignKey("DieticianId")]
        public virtual ICollection<MenteesDieticians> DieticianMentees { get; set; }
}

public class MenteesDieticians
{
        [Key]
        public int MenteesDieticiansId { get; set; }

        [Required]
        [ForeignKey("Mentee")]
        public string MenteeId { get; set; }

        [ForeignKey("MenteeId")]
        public virtual ApplicationUser Mentee { get; set; }

        [Required]
        [ForeignKey("Dietician")]
        public string DieticianId { get; set; }

        [ForeignKey("DieticianId")]
        public virtual ApplicationUser Dietician { get; set; }
}

在我的DbContext类中,我还定义了关系:

protected override void OnModelCreating(ModelBuilder builder)
{
        base.OnModelCreating(builder);

        builder.Entity<ApplicationUser>()
            .HasMany(x => x.DieticianMentees)
            .WithOne()
            .HasForeignKey(x => x.DieticianId);
        builder.Entity<ApplicationUser>()
            .HasMany(x => x.Dieticians)
            .WithOne()
            .HasForeignKey(x => x.MenteeId);

        builder.Entity<MenteesDieticians>()
            .HasOne(x => x.Mentee)
            .WithOne()
            .HasForeignKey<MenteesDieticians>(t => t.MenteeId);
        builder.Entity<MenteesDieticians>()
            .HasOne(x => x.Dietician)
            .WithOne()
            .HasForeignKey<MenteesDieticians>(t => t.DieticianId);
}

最后,我的迁移代码看起来是这样的:

    migrationBuilder.CreateTable(
        name: "MenteesDieticians",
        columns: table => new
        {
            MenteesDieticiansId = table.Column<int>(nullable: false)
                .Annotation("MySQL:ValueGenerationStrategy", MySQLValueGenerationStrategy.IdentityColumn),
            MenteeId = table.Column<string>(nullable: false),
            DieticianId = table.Column<string>(nullable: false),
            ApplicationUserId = table.Column<string>(nullable: true),
            ApplicationUserId1 = table.Column<string>(nullable: true)
        },

为什么我有这些ApplicationUserId和ApplicationUserId1列?怎么解决?

你觉得这样定义那些关系怎么样?老实说,我需要用户只有一个营养师,但我没有找到实现它的方法。

共有1个答案

沈永贞
2023-03-14

请尝试以下配置。首先,只从一侧配置就足够了。第二,从模型中删除注释。

protected override void OnModelCreating(ModelBuilder builder)
{
    base.OnModelCreating(builder);

    builder.Entity<ApplicationUser>()
        .HasMany(x => x.Dieticians)
        .WithOne(x => x.Dietician)
        .HasForeignKey(x => x.DieticianId);
    builder.Entity<ApplicationUser>()
        .HasMany(x => x.DieticianMentees)
        .WithOne(x => x.Mentee)
        .HasForeignKey(x => x.MenteeId);
}

我得说,你的设置有点奇怪。你能详细说明你在这里的目标是什么吗?

 类似资料:
  • 我有Class1类的object1。我想将Class1类扩展到Class2,添加一个方法,然后创建Class2的object2,它在所有方法中的行为都与object1完全相同,只是现在它将有一个额外的方法。 Object1.OldMethod应该具有与Object2.OldMethod完全相同的行为。一个愚蠢的方法是编写一个脚本,用class1继承的100多个方法生成新类: 编辑:很抱歉没有把它说

  • 我需要将一个新项添加到现有的中,给定一个键和一个值。该值在方法sig中指定为,并且应该是objectNode.set()接受的类型之一(、、等)。但是我不能只执行,因为value只是一个,当然我会出现“不适用参数(String,Object)”错误。 一定有更好的办法,但我找不到。 我猜有一种使用的方法,但我现在还不清楚是如何使用的。例如,我可以将值作为字符串写出来,但我需要它作为我可以在Obje

  • 我有两个json对象,请不要是字符串,我想将它们组合成一个json对象,如下所示。 两个对象: 预期结果: 有没有一种优雅的方法可以做到这一点?我的意思是,不提取每支笔和每本书的值,然后使用以下方法将它们重新插入包 我正在使用org。科德豪斯。抛弃json。JSONObject,如果需要该信息。

  • 问题内容: 我是JavaScript的初学者,想显示HTML中的对象数组。 数据格式如下: 我想使用包含三列(id,名称,相关性)的列表来显示它们。ID可以从1自动增加。 谁能告诉我如何编写一个JavaScript代码来显示它? 请给我一些材料或示例进行学习。 问题答案: 说明 您想要的是用JavaScript填充HTML中的表(或另一个DOMElement),一旦加载页面并接收到JSON对象,该

  • 问题内容: 我需要从URL对象创建一个File对象我的需求是我需要创建一个网络图像的文件对象(例如googles徽标) 问题答案: 您可以利用以便从URL加载图像,然后将其写入文件。像这样: 如果需要,这还允许您将图像转换为其他格式。

  • JavaScript对每个创建的对象都会设置一个原型,指向它的原型对象。 当我们用obj.xxx访问一个对象的属性时,JavaScript引擎先在当前对象上查找该属性,如果没有找到,就到其原型对象上找,如果还没有找到,就一直上溯到Object.prototype对象,最后,如果还没有找到,就只能返回undefined。 例如,创建一个Array对象: var arr = [1, 2, 3]; 其