【发布时间】:2018-11-12 02:14:49
【问题描述】:
我正在使用实体框架构建 Web 应用程序,数据库是在启动时创建的,我的种子方法将一些实体添加到数据库中没有任何问题。实体的检索也没有问题。
我的问题是,如果我尝试从 UI 层创建实体,则会遇到错误 OriginalValues cannot be used for entities in the Added state。异常不会被抛出到 UI,但是当我从问题中挖掘时发现它。
我发生在我的:
public virtual TEntity Add(TEntity entity)
{
var entry = _context.Entry(entity);
entry.State = EntityState.Added;
_dbSet.Add(entity);
return entity;
}
截图:
实体非常小,映射关系:
public abstract class EntityBase
{
public int Id { get; set; }
}
public class AccessCode : EntityBase
{
public string Code { get; set; }
public int UsageCount { get; set; }
}
public class AccessCodeMapping : EntityTypeConfiguration<AccessCode>
{
public AccessCodeMapping()
{
// Table
ToTable("AccessCode");
// Primary key
HasKey(x => x.Id);
// Properties
Property(accesscode => accesscode.Code).IsRequired().HasMaxLength(256);
Property(accesscode => accesscode.UsageCount).IsRequired();
}
}
这就是我为演示目的创建测试访问代码的方式
var ac = new AccessCode {Code = "321", UsageCount = 0};
_accessCodeService.Create(ac);
_unitOfWork.Save();
return View("Login");
谁能弄清楚为什么会发生这个错误?我迷路了。 :-)
P.s 如果有一些你想看的代码,请告诉我。
【问题讨论】:
-
你解决了吗?
-
使用解释
OriginalValues用途的副本关闭。很明显,添加的实体没有原始值。这只是应该被视为理所当然的众多调试器工件之一。
标签: c# entity-framework