当我使用Update-Database
时,它通常运行良好,并且在SQL端看到了更改。创建模型时,所有属性都使用Required
,但是在删除此注释后,映射列仍为not null
。我通过添加和删除列测试了迁移设置,效果很好。
我的模型是这样的:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Company.Employees {
[Serializable]
[Table("EmployeeRecords")]
public class EmployeeRecords {
[Key]
[Required]
public Guid EmployeeID { get; set; }
[Required]
[Display(Name = "Date Submitted")]
public DateTime DateSubmitted { get; set; }
[Display(Name = "Date Processed")]
public DateTime? DateProcessed { get; set; }
[Required]
[Display(Name = "Submitted By")]
public string SubmittedBy { get; set; }
[Required]
[Display(Name = "Employees")]
public Int16 Employees { get; set; }
[Required]
[Display(Name = "Total Wages")]
public decimal TotalWages { get; set; }
[Required]
[Display(Name = "Total Benefits")]
public decimal TotalBenefits { get; set; }
public List<EmployerReference> EmployerReferences { get; set; }
}
}
您会看到属性DateProcessed
不是[Required]
。但是EF没看到这个。
我还使用其他数据注释进行了测试。我添加了[MaxLength(450)]
,然后运行了Update-Database。这可以正常工作,在SQL中,映射的列更改为VARCHAR(450)
可能我走了,这是我的第一个使用代码优先的应用程序。请让我知道是否需要更多信息。谢谢!
编辑:
我刚刚尝试使用Fluent API,如下所示:
modelBuilder.Entity<RemittanceBatch>().Property(m => m.DateProcessed).IsOptional();
base.OnModelCreating(modelBuilder);
这也不起作用。
编辑2:
它使我可以使DateSubmitted
字段为空。但是不允许我将DateProcessed
字段设为可空。这有什么区别...嗯
答案 0 :(得分:0)
因此,我可能永远也找不到真正的问题所在。现在,我愿意将其称为错误。这是解决问题的方法。
Update-Database
。Update-Database
。 魔术!可行!