可空属性到实体字段,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); }