Asp.net mvc 在asp.net mvc中,在复合键表的一列中保存具有相同值的多行时出错

Asp.net mvc 在asp.net mvc中,在复合键表的一列中保存具有相同值的多行时出错,asp.net-mvc,Asp.net Mvc,我的实体模型: [Table("Student")] public class Students { [Key] public int id { get; set; } public string Student_name{ get; set; } } [Table("StudentInSubjects")] public class Subjects { [Key] //public int id {

我的实体模型:

 [Table("Student")]
   public class Students
   {
       [Key]
       public int id { get; set; }
       public string Student_name{ get; set; }
   }

[Table("StudentInSubjects")]
public class Subjects
{
       [Key]
       //public int id { get; set; }
       [DatabaseGenerated(DatabaseGeneratedOption.None)]
       public int StudentId { get; set; }
       public int SubjectId { get; set; }
}
我知道asp.net中的实体模型需要一个
列/id
作为键,该键将自动递增(MySQL服务器中的标识规范为
yes

否则,实体模型将搜索一个键

但在上面的模型中,我不想添加任何其他列作为键。如果未使用
,则错误显示
未定义任何键
。但是当在
SubjectId
中使用
key
时,它只接受唯一值,我需要具有相同值的多行

SaveChanges()
方法中,会出现以下错误:

已成功提交对数据库的更改,但 更新对象上下文时出错。对象上下文 可能处于不一致的状态

内部异常消息:
AcceptChanges无法继续,因为对象的键值冲突 使用ObjectStateManager中的另一个对象。确保钥匙 在调用AcceptChanges之前,值是唯一的

我的表将包含两列(
StudentId
SubjectId
),它们是一个复合键

现在我的问题是:是否有其他方法可以保存行而不在表中添加另一列作为键


谢谢。

我终于找到了替代方案。我刚刚添加了
[key]
[column(Order=OrderNumber)]
如下,将其视为实体模型中的
复合键

   [Table("StudentInSubjects")]
   public class Subjects
    {
       [Key]
       [Column(Order = 0)]
       [DatabaseGenerated(DatabaseGeneratedOption.None)]
       public int StudentId { get; set; }

       [Key]
       [Column(Order = 1)]
       public Guid SubjectId { get; set; }
    }
谢谢