在共享属性值的项目中,要求实体框架中的唯一值

时间:2016-07-13 18:54:39

标签: c# entity-framework data-annotations

我正在努力使AnswerString在共享相同ModuleID值的答案中成为唯一的。我将如何实现这一目标?

public class Answer
{
    public int AnswerID { get; set; }
    [MaxLength(25)]
    [Required]
    [Key]
    public string AnswerString { get; set; }
    public int ModuleID { get; set; }
    public int PictureCount { get; set; }
}

2 个答案:

答案 0 :(得分:2)

将此属性添加到AnswerString:

[Index("IX_AnswerStringModuleId",2,IsUnique = true)]

然后将此属性添加到ModuleId:

[Index("IX_AnswerStringModuleId",1, IsUnique = true)]

基本上,这会设置一个唯一约束,其中ModuleId和AnswerString的组合必须是唯一的。

也请参阅此答案:Unique Key constraints for multiple columns in Entity Framework

答案 1 :(得分:0)

我建议为属性创建一个属性,该属性将在类或属性级别进行评估。这将在对象/模型中应用您的业务逻辑,而不依赖于EF。如果您不打算这样做,那么我建议使用上面建议的属性或对表本身应用约束。