0

Ich versuche, so nach einer Konfiguration mit Fluent API hinzuzufügen:Der Typ ‚short‘ muss einen Referenztyp sein, um es als Parameter ‚TTargetEntity‘ zu verwenden in der generischen Art

public class PeriodTypeMappings: EntityTypeConfiguration<PeriodType> 
    { 
     public PeriodTypeMappings() 
     { 
      this.HasKey(p => p.PeriodTypeId); 
      this.Property(p => p.PeriodTypeName).HasMaxLength(value: 25); 
      this.HasRequired(p => p.PeriodTypeName); 
      this.HasRequired(p => p.NumberOfPartitions);//compile error 
     } 
    } 

Aber ich erhalte die folgende Ausnahme:

der Typ ‚short‘ muss ein Referenztyp sein, um es als Parameter ‚TTargetEntity‘ zu verwenden in der generischen Art oder Methode ‚EntityTypeConfiguration.HasRequired (Ex pression>)‘

Die Ausnahme ist aufgetreten im letzten Zeile this.HasRequired(p => p.NumberOfPartitions); wo NumberOfPartitions vom Typ kurz ist.

Warum dies passiert ist und wie dieses Problem zu beheben, ich versuche zu sagen, dass dieses Feld erforderlich ist.

Antwort

2

HasRequired zum Abbilden Navigationseigenschaften verwendet wird. Was Sie suchen, ist IsRequired. Wenn Ihre Property jedoch nicht nullfähig ist, ist sie standardmäßig erforderlich. Ihr Mapping sollte folgendermaßen aussehen:

this.HasKey(p => p.PeriodTypeId); 

this.Property(p => p.PeriodTypeName) 
    .IsRequired() 
    .HasMaxLength(25); 

this.Property(p => p.NumberOfPartitions) 
    .IsRequired();