当我尝试执行简单的添加操作时,实体框架会给出一个非常神秘的错误消息。
_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.
用户继承自IdentityUser
Microsoft.AspNet.Identity
我划了检查数据库和模型,我似乎无法确定导致问题的属性。模型包含:
我不知道导致问题的财产是什么,我怎么能更具体地了解?它可能是别的吗?异常对话框不包含查看内部异常的熟悉链接。
答案 0 :(得分:4)
要了解有关正在发生的事情的更多信息,请尝试执行以下操作:
1)添加Interceptor以查看基础数据库操作。从日志中,您可以看到INSERT命令,并可能通过将其与表约束进行比较来查看正在发生的事情。
2)在SaveChanges上放置一个断点,并从Context
对象中查看被跟踪的实体。确保此用户是唯一添加的实体并标记为脏。从那里你还可以看到它的属性
3)在您的模型中,将所有非强制属性逐个标记为[NonMapped]
。以这种方式发现有问题的财产。如果那些继承自基类的属性,则可以在数据库配置类中以编程方式将它们标记为NonMapped
。
4)如果以上情况不起作用,请尝试使用LinqPad进行插入(来自1)
)并查看是否收到更好的错误消息
希望这有帮助
答案 1 :(得分:0)
尝试为用户提供用户名,例如
_context.Users.Add(new User
{
UserName = "Bob",
DateJoined = DateTime.UtcNow
});
_context.SaveChanges();