具有相同拥有实体类型的一对一和一对多关系

时间:2020-02-06 23:17:46

标签: entity-framework-core ef-code-first entity-framework-migrations ef-core-2.2 owned-types

this question之后,我尝试使用拥有的实体类型,但遇到以下情况:

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; }
}

不能将表“ Users”用于实体类型“ User.Avatar#Image” 正在用于实体类型“用户”,并且没有关系 在其主键之间。

解决此问题的唯一方法是使用Image创建名为Photo的{​​{1}}的副本,并且迁移已成功创建,但这不是我应该的我希望这样做。

0 个答案:

没有答案