【问题标题】:Entity Framework: .Add & .SaveChanges() is not adding entity to database实体框架:.Add & .SaveChanges() 没有将实体添加到数据库
【发布时间】:2020-02-18 22:59:19
【问题描述】:

当我添加条目时

var objectEntity = new ObjectStaging();
objectEntity .CreatedBy = ClaimsPrincipal.Current.Identity.Name;
objectEntity .ModifiedBy = ClaimsPrincipal.Current.Identity.Name;
objectEntity .Set(ObjectInfo);
database.ObjectStaging.Add(objectEntity);
database.SaveChanges();

由于某种原因,我的 objectEntity 没有被添加到我的数据库中,给出了以下代码。使用调试器时,它会通过database.ObjectStaging.Add(objectEntity);,但在调用SaveChanges() 后不会继续。有没有办法知道为什么无法将条目添加到数据库?

抛出异常:

抛出异常: 'System.Data.Entity.Validation.DbEntityValidationException' 在 一个或多个实体的 VCC.BrokerPortal.DAO.dll 验证失败。 有关详细信息,请参阅“EntityValidationErrors”属性。

有没有办法知道什么具体没有验证?

另外,我使用以下代码行测试了实体的状态,

database.ObjectStaging.Add(objectEntity);
var state= brokerPortalDB.Entry(objectEntity).State;

state 当前显示“已添加”的值。

【问题讨论】:

  • 你检查过 database.Entry(objectEntity).State 吗?
  • 如果调试器没有继续通过 SaveChanges(),那么您可能会引发异常,并且您的异常设置不会在所有异常上中断,或者此代码在吞下异常的工作线程上运行没有调试器中断。异常设置应该在 VS 中的“调试”->“Windows”下可用,然后选择“公共语言运行时异常”,使其成为一个勾选框。 (不是默认屏蔽的“Square”)
  • @FLICKER - 更新了线程。当我测试状态时,它显示了一个“添加”的值。
  • 查看此链接以探索验证错误:stackoverflow.com/questions/7795300/…

标签: sql sql-server entity-framework


【解决方案1】:

谢谢!

我最终调查了引发的异常,它似乎与未经过适当验证的属性之一有关。在这种情况下,我有一个 [MaxLength] 属性分配给一个字段,我试图添加一个比允许的长度更长的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 2021-08-14
    • 2013-12-26
    相关资源
    最近更新 更多