Reputation: 310
I have entity
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; }
}
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.
Upvotes: 1
Views: 4829
Reputation: 21
Remove
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
Add a constructor in your Realtor class.
public Realtor()
{
this.Guid = Guid.NewGuid();
this.Restration = DateTime.Now;
}
And remove this from OnModelCreating
real.Property<Guid>(p => p.Guid).HasDefaultValueSql("newsequentialid()");
real.Property<DateTime>(p => p.Restration).HasDefaultValueSql("getdate()");
Upvotes: 2
Reputation: 5946
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;
Should work (I ain't got a VS 2015 here, so you have to test. Otherwise set the value for Restration
in constructor.)
update: and remove at least this line
real.Property<DateTime>(p => p.Registration)
.HasDefaultValueSql("getdate()");
Upvotes: 4