C# 实体框架核心-实体类型上的属性是键的一部分,因此无法修改或标记为已修改
我试着在EF core里用下面的线做一个复合键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
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; }
}