gpt4 book ai didi

c# - Entity Framework - 简单操作给出格式异常 - 索引(从零开始)必须大于或等于零

转载 作者:太空宇宙 更新时间:2023-11-03 21:24:17 24 4
gpt4 key购买 nike

当我尝试执行简单的添加操作时, Entity Framework 给出了一条非常神秘的错误消息。

_context.Users.Add(new User
{
DateJoined = DateTime.UtcNow
});
_context.SaveChanges();

FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.

User 继承自 IdentityUser from Microsoft.AspNet.Identity

我交叉检查了数据库和模型,但我似乎无法确定是什么属性导致了问题。模型包含:

  1. 整数、 bool 值和字符串 - 获取默认值
  2. 我提供的一个不可为 null 的 DateTime 属性 (DateJoined)
  3. 一个可为空的 DateTime 属性
  4. 一个正确默认为 0 的枚举
  5. 虚拟 ICollection

我不明白是什么属性导致了这个问题,我怎样才能更具体地知道呢?会不会是别的东西?异常对话框不包含用于查看内部异常的熟悉链接。

最佳答案

要进一步了解正在发生的事情,请尝试执行以下操作:

1) 添加 Interceptor查看底层数据库操作。从日志中,您可以看到 INSERT 命令,并且可以通过将其与表约束进行比较来了解发生了什么。

2) 在 SaveChanges 上放置一个断点,并从 Context 对象中查看被跟踪的实体。确保此用户是唯一添加的实体并标记为脏。从那里您还可以看到它的属性

3) 在您的模型中,将所有非强制属性一一标记为[NonMapped]。以这种方式找出有问题的属性。如果这些属性是从基类继承的,您可以在数据库配置类中以编程方式将它们标记为 NonMapped

4) 如果以上方法均无效,请尝试使用 LinqPad进行插入(来自 1) )并查看是否收到更好的错误消息

希望对你有帮助

关于c# - Entity Framework - 简单操作给出格式异常 - 索引(从零开始)必须大于或等于零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28257991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com