EF7 错误插入默认日期
EF7 Error insert Default Date
我将 EF7 与 SQLite 一起使用,并像这样定义我的 class:
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();
我收到这个错误:
An unhandled exception of type
'Microsoft.Data.Entity.DbUpdateConcurrencyException' occurred in
EntityFramework.Core.dll Additional information: Database operation
expected to affect 1 row(s) but actually affected 0 row(s). Data may
have been modified or deleted since entities were loaded
知道我为什么会收到此错误吗?
您可以使用 Auto-Implemented Properties,如下所示。
class LogMessage
{
public LogMessage()
{
}
public DateTime? MessageDate { get; set; } = DateTime.Now;
public string Body { get; set; }
}
我将 EF7 与 SQLite 一起使用,并像这样定义我的 class:
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();
我收到这个错误:
An unhandled exception of type 'Microsoft.Data.Entity.DbUpdateConcurrencyException' occurred in EntityFramework.Core.dll Additional information: Database operation expected to affect 1 row(s) but actually affected 0 row(s). Data may have been modified or deleted since entities were loaded
知道我为什么会收到此错误吗?
您可以使用 Auto-Implemented Properties,如下所示。
class LogMessage
{
public LogMessage()
{
}
public DateTime? MessageDate { get; set; } = DateTime.Now;
public string Body { get; set; }
}