我有实体
public class Realtor
{
[Key]
public int Id { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Guid { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public DateTime Registration { get; set; }
[ForeignKey("Id")]
public int SubdivId { get; set; }
public Subdiv Subdiv { get; set; }
}
和 OnModelCreating 方法的上下文
modelBuilder.Entity<Realtor>(real => {
real.Property<Guid>(p => p.Guid)
.HasDefaultValueSql("newsequentialid()");
real.Property<DateTime>(p => p.Registration)
.HasDefaultValueSql("getdate()");
real.HasOne(r => r.Subdiv)
.WithMany(s => s.Realtors)
.HasForeignKey(r => r.SubdivId);
});
我为属性 Registration 设置了默认值,但是当我执行插入操作时,我得到异常:无法将值 null 插入列 Registration。
最佳答案
首先,删除 [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
以进行 Restration
。这可能是您异常(exception)的原因。如果您不想让它可以为 null 并希望使用您的实体设置值,您还可以:
public DateTime Restration { get; set; } = DateTime.Now;
应该工作(我这里没有 VS 2015,所以你必须测试。否则在构造函数中设置 Restration
的值。)
更新: 并至少删除这一行
real.Property<DateTime>(p => p.Registration)
.HasDefaultValueSql("getdate()");
关于c# - EF Core 无法将值 null 插入到具有默认值的列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40364084/