C# 实体框架核心-实体类型上的属性是键的一部分,因此无法修改或标记为已修改

C# 实体框架核心-实体类型上的属性是键的一部分,因此无法修改或标记为已修改,c#,entity-framework,entity-framework-core,C#,Entity Framework,Entity Framework Core,我试着在EF core里用下面的线做一个复合键 modelBuilder.Entity<PackageMaster>() .HasAlternateKey(a => new { a.InstituteId, a.CourseId, a.PackageCode, a.PackageName }); 但还是没有运气。任何帮助都将不胜感激您能发布实体类吗,因为如果您将其设置为键并生成数据库,您将得到该错误。@SenadMeškin Postedentity@Vijayanath

我试着在EF core里用下面的线做一个复合键

modelBuilder.Entity<PackageMaster>()
  .HasAlternateKey(a => new { a.InstituteId, a.CourseId, a.PackageCode, a.PackageName });

但还是没有运气。任何帮助都将不胜感激

您能发布实体类吗,因为如果您将其设置为键并生成数据库,您将得到该错误。@SenadMeškin Postedentity@VijayanathViswanathan,在更改为
modelBuilder.Entity().HasIndex(a=>new{a.InstituteId,a.CourseId,a.PackageCode,a.PackageName})后)仍然显示相同的错误消息?您找到解决方案了吗?我有相同的问题,上面的IsUnique()不工作
modelBuilder.Entity<PackageMaster>()
 .HasIndex(a => new { a.InstituteId, a.CourseId, a.PackageCode, a.PackageName })
 .IsUnique();
[Table(Schema.Institute + "." + nameof(PackageMaster))]
public class PackageMaster
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Key]
    public int PackageId { get; set; }

    [Required]
    [StringLength(5)]
    public string PackageCode { get; set; }

    [Required]
    [StringLength(50)]
    public string PackageName { get; set; }

    [StringLength(500)]
    public string Description { get; set; }

    public int InstituteId { get; set; }

    public int CourseId { get; set; }

    [ForeignKey("CourseId")]
    public CourseMaster CourseMaster { get; set; }        

    [Required]
    public decimal Cost { get; set; }

    [StringLength(3)]
    public string CurrencyCode { get; set; }

    public bool GSTIncluded { get; set; }
}