我有实体
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设置了默认值,但是当我执行插入时,我得到了Exception:无法将值null插入到Column Registration列中。
答案 0 :(得分:3)
首先,删除[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
的{{1}}。这可能是您例外的原因。如果您不想让它可以为空并且想要使用您的实体设置值,您还可以:
Restration
应该工作(我这里没有VS 2015,所以你必须测试。否则在构造函数中设置public DateTime Restration { get; set; } = DateTime.Now;
的值。)
<强>更新强> 并删除至少这一行
Restration
答案 1 :(得分:1)
删除
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
在Realtor类中添加构造函数。
public Realtor()
{
this.Guid = Guid.NewGuid();
this.Restration = DateTime.Now;
}
并从OnModelCreating
中删除它real.Property<Guid>(p => p.Guid).HasDefaultValueSql("newsequentialid()");
real.Property<DateTime>(p => p.Restration).HasDefaultValueSql("getdate()");