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; }
}
谢谢