c# - EF Core 无法将值 null 插入到具有默认值的列中

标签 c# .net entity-framework

我有实体

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/

相关文章:

c# - MD5 哈希在 C# 和 Objective C 中不相似

c# - MS Chart - 如何将 X 标签放在列系列的左侧

c# - 从不同线程中的非托管代码调用 Unity C# 委托(delegate) (Android)

c# - 使用撤消和重做功能绘制形状和字符串

c# - ASP.NET 的 ObjectDataSource 和 NHibernate session 管理

asp.net - 现实生活中的 EF,我想相信(有人对重要的 EF 1.0(3.5) 或 4.0 示例有很好的指导吗?)

c# - 为什么 UriBuilder.query 不转义(url 编码)查询字符串?

c# - 如何加载 PNG 并导出到 TGA 在 C# 中保持 alpha?

c# - 无法将类型 system.data.entitystate 隐式转换为 system.data.entity.entitystate(您是否缺少强制转换?)

c# - 不使用 saveChanges 更新 DBSet