Как установить уникальное ограничение с помощью Entity Framework Code First?
Я пытаюсь сделать следующее:
В классе приложения: добавьте ограничение UNIQUE с именем IX_Unique_Applicatation в качестве бизнес-правила, чтобы убедиться, что никто не может применять к одной и той же публикации более одного раза.
Я пытаюсь применить это к
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()
{
}
}
Это абсолютно пусто (очевидно, должно быть что-то в пустоте вверх и вниз) Я пробовал это на нескольких разных полях... Я не вижу, где я иду не так, и был бы очень признателен за помощь.
редактировать: я пытался такого рода кодирования с этим, давая мне ошибку о моем уникальном в поле идентификатора?
[Index("IX_MyTwoColumns", 1, IsUnique = true)]
public int UserAttributeId { get; set; }
[ForeignKey("UserAttributeId")]
public virtual UserAttribute UserAttribute { get; set; }
1 ответ
Я не знаю, как это сделать с аннотациями данных, но вы можете попробовать это.
В вашем классе DbContext:
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<Application>()
.HasIndex(a => a.Applicant)
.IsUnique();
}