Entity Framework。解决零或一对一使用一个导航属性

Entity Framework. Resolve Zero Or One to one use one navigation property

对不起我的英语。我有以下实体:

public class MediaAlbum
{
    [Key]
    public Guid AlbumId { get; set; }

    public string Title { get; set; }

    public virtual ICollection<MediaImage> Images { get; set; }

    public Guid? CoverId { get; set; }
    [ForeignKey("ImageId")]
    public virtual MediaImage Cover { get; set; }
}

public class MediaImage
{
    [Key]
    public Guid ImageId { get; set; }

    public string Image { get; set; }

    public Guid AlbumId { get; set; }
    [ForeignKey("AlbumId")]
    public virtual MediaAlbum Album { get; set; }
}

我需要地图导航 属性 覆盖 到实体 'MediaImage'。 我试图通过fluentApi解决,但没有成功:

   modelBuilder.Entity<MediaAlbum>().HasOptional(x => x.Cover).WithOptionalPrincipal()
            .Map(x => x.MapKey("ImageId"));

试试这个:

modelBuilder.Entity<MediaAlbum>()
         .HasOptional(x => x.Cover)
         .WithRequired(x => x.Album)
         .WillCascadeOnDelete();

使用这个:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<MediaAlbum>().HasMany(x => x.Images)
                    .WithRequired(x => x.Album).HasForeignKey(x=>x.AlbumId);
        modelBuilder.Entity<MediaAlbum>().HasOptional(x => x.Cover);
    }

外键是 CoverId 而不是 ImageId:

public class MediaAlbum
{
    [Key]
    public Guid AlbumId { get; set; }

    public string Title { get; set; }

    public virtual ICollection<MediaImage> Images { get; set; }

    public Guid? CoverId { get; set; }
    [ForeignKey("CoverId")]// change to this
    public virtual MediaImage Cover { get; set; }
}