0

Ich versuche, die folgend zu tun:So legen Sie eine eindeutige Integritätsbedingung mithilfe des Entity Framework-Codes fest Zuerst?

In der Anwendungsklasse: eine UNIQUE-Einschränkung hinzufügen IX_Unique_Applicatation als Geschäftsregel stellen Sie sicher, genannt, dass niemand mehr als einmal auf die gleiche Buchung anwenden kann.

Ich versuche, diese

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

    } 
} 

zu

anwenden Wenn ich Add-Migration IX_Unique_Applicatation ich:

public partial class IX_Unique_Applicatation : DbMigration 
    { 
     public override void Up() 
     { 
     } 

     public override void Down() 
     { 
     } 
    } 

Es ist völlig leer (offensichtlich Sachen in der Leere haben sollte und nichtig Down Ich habe es auf ein paar verschiedene Felder ausprobiert..ich sehe nicht, wo ich falsch liege und würde die Hilfe sehr schätzen.

edit: Ich habe versucht th ist eine Art von Codierung mit mir einen Fehler über meine Unique auf dem ID-Feld?

[Index("IX_MyTwoColumns", 1, IsUnique = true)] 
public int UserAttributeId { get; set; } 
[ForeignKey("UserAttributeId")] 
public virtual UserAttribute UserAttribute { get; set; } 
+0

Wenn dies geschieht, ich kopiere, indem Configuration.cs irgendwo Datei (wenn überhaupt drin ist), dann ich: 1. Löschen Sie den Migrations-Ordner 2. Re- Aktivieren Sie Migrationen mit dem Befehl 'enable-migrations'. 3. Sie sollten jetzt in der Lage sein, 'add-migration *' erneut auszuführen und Ihre Änderungen in diesen Methoden zu sehen. –

+0

@IanGesner Meine Migrationen funktionieren, da kann ich ein anderes Unique auf einer anderen Tabelle machen, aber es ist nicht auf einer Virtuellen wie diese ist. – Bowie

+0

"um sicherzustellen, dass niemand mehr als einmal auf den selben Beitrag zugreifen kann" - was ist ein Beitrag? Es kann nur einen Bewerber pro Bewerbung geben. Soll dieser FK also einmalig sein? Wenn ja, kann sich jeder Bewerber nur einmal bewerben *. –

Antwort

0

Ich weiß nicht, dies mit Daten Anmerkungen zu tun, aber Sie können dies versuchen.

In Ihrer DbContext Klasse:

protected override void OnModelCreating(ModelBuilder builder) 
{ 
     builder.Entity<Application>() 
      .HasIndex(a => a.Applicant) 
      .IsUnique(); 
} 
Verwandte Themen