.Net迁移实体类型“List< int>”要求定义主键

lf5gs5x2  于 2023-01-03  发布在  .NET
关注(0)|答案(1)|浏览(135)

大家好,我有一个关于迁移的问题。我使用抽象类:

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
        public string Name { get; set; }
        [ForeignKey("UserId")]
        public int UserId { get; set; }
        public DateTime? DateTime { get; set; }
        public virtual User User { get; set; }

然后我有2个表如下:

public class MovieFavoriteList:FavoriteListBase<int>
    {
        public List<int> MovieIds { get; set; }

    }
public class TvSeriesFavoriteList:FavoriteListBase<int>
    {
        
        public List<int> TvIds { get; set; }
    }

尝试迁移时出现此错误:
实体类型“List”需要定义主键。如果要使用无键实体类型,请在“OnModelCreating”中调用“HasNoKey”。有关无键实体类型的详细信息,请参见https://go.microsoft.com/fwlink/?linkid=2141943
你们知道我该怎么修吗?
我尝试如下:

[Keyless]
    public class TvSeriesFavoriteList:FavoriteListBase<int>
    {
        
        public List<int> TvIds { get; set; }
    }

但是后来我意识到这是无稽之谈:

q9yhzks0

q9yhzks01#

出现此错误是因为找不到主键。如果要使用默认约定,请将此属性用于要用作主键的属性。

[ForeignKey(nameof(MovieIds)]
public int MovieIds {get;set;}

或对于Fluent API:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
   base.OnModelCreating(modelBuilder);
   modelBuilder.Entity<MovieFavoriteList>().HasKey(p=>p.MovieIds)
}

相关问题