EF Core无法将null值插入具有默认值的列中 [英] EF Core cannot insert the value null into column with default value
问题描述
我有实体
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方法的上下文
and context with OnModelCreating method
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);
});
我为属性注册设置了默认值,但是当我执行插入操作时,出现异常:无法插入
I set default value for property Registration, but when I do an insert, I get Exception: cannot insert the value null into column Registration.
推荐答案
首先,删除 [DatabaseGenerated(DatabaseGeneratedOption.Identity )]
表示 Restration
。这可能是导致您异常的原因。如果您不想使其成为可空值并希望通过您的实体设置该值,则还可以:
First of all, remove the [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
for Restration
. This could be the cause for your exception. If you don't want to make it nullable and want to set the value with your entity you could also:
public DateTime Restration { get; set; } = DateTime.Now;
应该工作(我这里没有VS 2015,所以您必须测试。否则进行设置
Should work (I ain't got a VS 2015 here, so you have to test. Otherwise set the value for Restration
in constructor.)
update:
和至少删除此行
update: and remove at least this line
real.Property<DateTime>(p => p.Registration)
.HasDefaultValueSql("getdate()");
这篇关于EF Core无法将null值插入具有默认值的列中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!