EF7错误插入默认日期

时间:2016-10-14 14:50:39

标签: c# entity-framework sqlite default

我正在使用EF7和SQLite,并像我这样定义我的类:

 class LogMessage
{
    public LogMessage()
    {

    }

    public DateTime? MessageDate { get; set; }
    public string Body { get; set; }

}
在OnModelCreating中的

我指定默认值,如下所示:

modelBuilder.Entity<LogMessage>()
            .Property(m => m.MessageDate).HasDefaultValueSql("CURRENT_TIMESTAMP");

当我检查数据库时,我得到了这个看起来很好的结构:

CREATE TABLE "LogMessage" 
(
"MessageDate" TEXT NOT NULL DEFAULT (CURRENT_TIMESTAMP) CONSTRAINT "PK_LogMessage" PRIMARY KEY,
"Body" TEXT
)

但是当我尝试使用此代码向实体添加内容时:

result = "a";
Message = new LogMessage();
Message.Body = result;
context.LogMessages.Add(Message);
context.SaveChanges();

我收到此错误:

  

未处理的类型异常   发生了'Microsoft.Data.Entity.DbUpdateConcurrencyException'   EntityFramework.Core.dll附加信息:数据库操作   预计影响1行但实际影响0行。数据可能   自实体加载以来已被修改或删除

我为什么会收到此错误?

1 个答案:

答案 0 :(得分:1)

您可以使用Auto-Implemented Properties,如下所示。

 class LogMessage
{
    public LogMessage()
    {

    }

    public DateTime? MessageDate { get; set; } = DateTime.Now;
    public string Body { get; set; }

}