我正在尝试执行以下操作:
在应用程序类中: 添加名为IX_Unique_Applicatation的UNIQUE约束作为业务规则 确保没有人可以多次申请同一个帖子。
我正在尝试将其应用于
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;
namespace solution_MVC_HR.Models
{
public class Application
{
public int ID { get; set; }
[Display(Name = "Covering Comments")]
[Required(ErrorMessage = "You cannot leave the summary comments blank.")]
[StringLength(2000,ErrorMessage ="Summary must be between 20 and 2000 characters",MinimumLength =20)]
[DataType(DataType.MultilineText)]
public string Comments { get; set; }
[Required(ErrorMessage ="You must specify the job posting applied for.")]
public int PostingID { get; set; }
public virtual Posting Posting { get; set; }
[Required(ErrorMessage = "You must specify the applicant applying to the job posting.")]
public int ApplicantID { get; set; }
[Index(IsUnique = true)]
public virtual Applicant Applicant { get; set; }
}
}
当我添加 - 迁移IX_Unique_Applicatation时,我得到:
public partial class IX_Unique_Applicatation : DbMigration
{
public override void Up()
{
}
public override void Down()
{
}
}
它完全是空白的(显然应该有空虚的东西和虚空我已经尝试了几个不同的领域..我不知道我哪里出错了,非常感谢帮助。
编辑:我尝试过这种编码,但是在ID字段上给我一个关于我的唯一身份的错误?
[Index("IX_MyTwoColumns", 1, IsUnique = true)]
public int UserAttributeId { get; set; }
[ForeignKey("UserAttributeId")]
public virtual UserAttribute UserAttribute { get; set; }
答案 0 :(得分:0)
我不知道用数据注释做这件事,但你可以试试这个。
在您的DbContext类中:
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<Application>()
.HasIndex(a => a.Applicant)
.IsUnique();
}