繁体   English   中英

.Net迁移实体类型'List<int> ' 需要定义主键</int>

[英].Net migration The entity type 'List<int>' requires a primary key to be defined

大家好,我对 migraiton 有疑问。我使用抽象 class,例如:

[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<int>”需要定义主键。 如果您打算使用无键实体类型,请在“OnModelCreating”中调用“HasNoKey”。 有关无键实体类型的更多信息,请参阅https://go.microsoft.com/fwlink/?linkid=2141943

你们知道我该如何解决吗?

我尝试如下:

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

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

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

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

或者对于流利的 API:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM