可空属性到实体字段,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); }
这段代码应该在从DbContext
inheritance的对象中。
乔恩的答案没有为我工作,因为我有一个编译器错误CS0453 C#types必须是一个不可为空值types为了使用它作为genericstypes或方法中的参数“T”
这虽然为我工作:
protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<SomeObject>().HasOptional(m => m.somefield); base.OnModelCreating(modelBuilder); }