在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}}的副本,并且迁移已成功创建,但这不是我应该的我希望这样做。