EF Core 无法创建迁移,因为“缺少”导航属性

问题描述 投票:0回答:1

这些类之间有一对多关系

public class VideoInstance
{
    public Guid Id { get; set; }

    public Guid VideoMetaId { get; set; }

    public virtual VideoMeta VideoMeta { get; set; }

    public virtual ICollection<VideoInstanceMetadata> VideoInstanceMetadata { get; set; }
}

还有

public class VideoInstanceMetadata
{
    public Guid Id { get; set; }

    public Guid VideoInstanceId { get; set; }

    public VideoInstance VideoInstance { get; set; }

    public string Key { get; set; }

    public string Value { get; set; }
}

通过 FluentAPI 配置

builder.HasMany(v => v.VideoInstanceMetadata)
    .WithOne(v => v.VideoInstance)
    .HasForeignKey(v => v.VideoInstanceId)
    .OnDelete(DeleteBehavior.Cascade);

但是我无法创建迁移,我得到的错误是

System.InvalidOperationException:找不到导航“VideoInstance(字典)。VideoInstanceMetadata”。请在配置之前将导航添加到实体类型。

这里出了什么问题?

c# entity-framework-core
1个回答
0
投票

尝试在

VideoInstance
中添加映射配置

public class VideoInstanceMapping : IEntityTypeConfiguration<VideoInstance>
{
    public void Configure(EntityTypeBuilder<VideoInstance> builder)
    {
        builder.ToTable("VideoInstances");

        // other properties

        builder.HasMany(v => v.VideoInstanceMetadata)
           .WithOne(u => u.VideoInstance)
           .IsRequired();
    }
}

我不确定这是否有效,但你可以尝试一下。另外,检查问题是否出在

VideoMeta
型号

© www.soinside.com 2019 - 2024. All rights reserved.