可空属性到实体字段,entity framework通过Code First
使用数据注释Required如下所示: 
 [Required] public int somefield {get; set;} 
 将数据库中的某些字段设置为Not Null ,如何设置字段以允许NULL ?,我尝试通过SQL Server Management Studio进行设置,但Entity Framework将其设置为Not Null 。 
 只要省略string somefield属性中的[Required]属性string somefield 。 这将使它在数据库中创build一个NULL列。 
要使inttypes在数据库中允许NULL,它们必须在模型中声明为可为null的整数:
 // 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; } 
另一种select是告诉EF允许列为空:
 protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<SomeObject>().Property(m => m.somefield).IsOptional(); base.OnModelCreating(modelBuilder); } 
 这段代码应该在从DbContextinheritance的对象中。 
乔恩的答案没有为我工作,因为我有一个编译器错误CS0453 C#types必须是一个不可为空值types为了使用它作为genericstypes或方法中的参数“T”
这虽然为我工作:
 protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<SomeObject>().HasOptional(m => m.somefield); base.OnModelCreating(modelBuilder); }