这些类之间有一对多关系
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”。请在配置之前将导航添加到实体类型。
这里出了什么问题?
尝试在
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
型号