Verwenden Sie die Datenanmerkung Required
wie folgt:
[Required]
public int somefield {get; set;}
Setzt ein Feld auf Not Null
in der Datenbank. Wie kann ich ein Feld festlegen
, um NULL- Werte zuzulassen? Ich habe versucht, es über SQL Server Management Studio festzulegen, aber Entity Framework hat es zurückgesetzt Not Null
.
entity-framework
asp.net-mvc-3
code-first
nullable
Chrisramon
quelle
quelle
Antworten:
Lassen Sie einfach das Attribut [Erforderlich] in der
string somefield
Eigenschaft weg . Dadurch wird eineNULL
fähige Spalte in der Datenbank erstellt.Damit int-Typen NULL-Werte in der Datenbank zulassen, müssen sie im Modell als nullfähige Ints deklariert werden:
// an int can never be null, so it will be created as NOT NULL in db public int someintfield { get; set; } // to have a nullable int, you need to declare it as an int? // or as a System.Nullable<int> public int? somenullableintfield { get; set; } public System.Nullable<int> someothernullableintfield { get; set; }
quelle
public int? somenullableintfield { get; set; }
Die andere Option besteht darin, EF anzuweisen, dass die Spalte null sein soll:
protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<SomeObject>().Property(m => m.somefield).IsOptional(); base.OnModelCreating(modelBuilder); }
Dieser Code sollte sich in dem Objekt befinden, von dem erbt
DbContext
.quelle
In Ef .net Core gibt es zwei Möglichkeiten, die Sie ausführen können. zuerst mit Datenanmerkungen:
public class Blog { public int BlogId { get; set; } [Required] public string Url { get; set; } }
Oder mit fließender API:
class MyContext : DbContext { public DbSet<Blog> Blogs { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Blog>() .Property(b => b.Url) .IsRequired(false)//optinal case .IsRequired()//required case ; } } public class Blog { public int BlogId { get; set; } public string Url { get; set; } }
Weitere Details finden Sie hier
quelle
Jons Antwort hat bei mir nicht funktioniert, da ich einen Compilerfehler erhalten habe. CS0453 C # Der Typ muss ein nicht nullbarer Werttyp sein, um ihn als Parameter 'T' im generischen Typ oder in der generischen Methode zu verwenden
Das hat aber bei mir funktioniert:
protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<SomeObject>().HasOptional(m => m.somefield); base.OnModelCreating(modelBuilder); }
quelle