EF Core无法将null值插入具有默认值的列中 [英] EF Core cannot insert the value null into column with default value

查看:620
本文介绍了EF Core无法将null值插入具有默认值的列中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有实体

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆