Sto lavorando a un progetto e vorrei impostare alcune proprietà facoltative nel primo approccio al codice. Nel mio file di classe ho aggiunto [Required]
alle proprietà che avrei impostato su null in SQL e le proprietà che non hanno [Required]
dovrebbero impostare null in SQL, ma per alcune proprietà che contengono ID in esso, viene impostato su non nullo in SQL. Di seguito è riportata la mia classe di esempio che contiene proprietà che dovrebbero essere utilizzate durante la generazione di tabelle nel database. Vorrei impostare EnvironmentLastDeployedId
proprietà EnvironmentLastDeployedId
su facoltativo quando crea un nuovo database in MSSQL.
public class Version
{
public int Id { get; set; }
[Required]
public string PackageName { get; set; }
public string VersionName { get; set; }
public string OriginalPackageName { get; set; }
[Required]
public string CommitID { get; set; }
public string CommitMessage { get; set; }
public int ApplicationId { get; set; }
public Application Application { get; set; }
public string CreatedBy { get; set; }
public int EnvironmentLastDeployedId { get; set; }
public Environment EnvironmentLastDeployed { get; set; }
public int StatusId { get; set; }
public Status Status { get; set; }
public DateTime CreatedOn { get; set; }
public DateTime ModifiedOn { get; set; }
}
Nel mio file di classe Context, ho provato a utilizzare Fluent API, ma ottengo solo il metodo IsRequired
, ma non IsOptional
o qualcosa che mi permetta di impostare la colonna della tabella per consentire il null nel database.
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Version>()
.Property(p => p.EnvironmentLastDeployedId).IsRequired();
}
Se si desidera consentire valori nulli per int è sufficiente utilizzare int ?:
public int? ApplicationId { get; set; }
Questo verrà mappato a una colonna nullable in SQL, quindi non genererà alcuna eccezione quando si tenta di memorizzare un record con un valore nullo per quella colonna.