Отношения один-к-одному и один-ко-многим с одним и тем же типом объекта - PullRequest
0 голосов
/ 07 февраля 2020

После этого вопроса Я пытался работать с собственными типами сущностей, но застрял в следующем сценарии:

public class User
{
    [Key]
    public Guid UserId { get; set; }
    public ICollection<Listing> Listings { get; set; }
    public Image Avatar { get; set; }
}

public class Listing
{
    [Key]
    public Guid ListingId { get; set; }
    public ICollection<Image> Photos { get; set; }
}

[Owned]
public class Image
{
    public long Size { get; set; }
    public string Height { get; set; }
    public string Width { get; set; }
}

public class DataContext : DbContext
{
    public DataContext(DbContextOptions<DataContext> options) : base(options) { }

    public DbSet<User> Users { get; set; }
    public DbSet<Listing> Listings { get; set; }    
}

Но при создании первой миграции я получил следующую ошибку:

Тип сущности 'Listing.Photos # Image' требует определения первичного ключа.

Поэтому я сделал это и получил еще одну ошибку:

[Owned]
public class Image
{
    [Key]
    public Guid ImageId { get; set; }
    public long Size { get; set; }
    public string Height { get; set; }
    public string Width { get; set; }
}

Невозможно использовать таблицу «Пользователи» для типа сущности «User.Avatar # Image», так как она используется для типа сущности «Пользователь» и нет связи между их первичными ключами.

Единственный способ обойти это - создать дубликат Image с именем Photo с PhotoId, и миграция была успешно создана, но я надеюсь, что это не то, что я должен делать .

...