После этого вопроса Я пытался работать с собственными типами сущностей, но застрял в следующем сценарии:
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
, и миграция была успешно создана, но я надеюсь, что это не то, что я должен делать .