我正在使用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行。数据可能 自实体加载以来已被修改或删除
我为什么会收到此错误?
答案 0 :(得分:1)
您可以使用Auto-Implemented Properties,如下所示。
class LogMessage
{
public LogMessage()
{
}
public DateTime? MessageDate { get; set; } = DateTime.Now;
public string Body { get; set; }
}