C# 实体框架-简单操作导致格式异常-索引(基于零)必须大于或等于零
当我尝试执行一个简单的添加操作时,Entity Framework给出了一个非常隐晦的错误消息C# 实体框架-简单操作导致格式异常-索引(基于零)必须大于或等于零,c#,entity-framework,entity-framework-6.1,C#,Entity Framework,Entity Framework 6.1,当我尝试执行一个简单的添加操作时,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 argu
_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
我交叉检查了数据库和模型,似乎无法确定是什么属性导致了问题。这些模型包括:
我不知道是什么属性导致了这个问题,我怎样才能更具体地知道呢?可能是别的什么吗?异常对话框不包含查看内部异常的常见链接。要了解更多有关发生的情况,请尝试执行以下操作: 1) 添加以查看基础数据库操作。从日志中,您可以看到INSERT命令,并可能通过将其与表约束进行比较来了解发生了什么 2) 在SaveChanges上放置一个断点,并查看
上下文中被跟踪的实体。确保此用户是唯一添加的实体并标记为脏。从那里你也可以看到它的属性
3) 在您的模型中,将所有非强制属性逐个标记为[NonMapped]
。通过这种方式发现有问题的属性。如果这些属性继承自基类,则可以在数据库配置类中以编程方式将它们标记为NonMapped
4) 如果以上各项都不起作用,请尝试使用执行插入操作(从1)
),并查看是否收到更好的错误消息
希望这有助于了解更多正在发生的事情,请尝试执行以下操作:
1) 添加以查看基础数据库操作。从日志中,您可以看到INSERT命令,并可能通过将其与表约束进行比较来了解发生了什么
2) 在SaveChanges上放置一个断点,并查看上下文中被跟踪的实体。确保此用户是唯一添加的实体并标记为脏。从那里你也可以看到它的属性
3) 在您的模型中,将所有非强制属性逐个标记为[NonMapped]
。通过这种方式发现有问题的属性。如果这些属性继承自基类,则可以在数据库配置类中以编程方式将它们标记为NonMapped
4) 如果以上各项都不起作用,请尝试使用执行插入操作(从1)
),并查看是否收到更好的错误消息
希望这有助于给用户一个用户名,例如
_context.Users.Add(new User
{
UserName = "Bob",
DateJoined = DateTime.UtcNow
});
_context.SaveChanges();
尝试给用户一个用户名,例如
_context.Users.Add(new User
{
UserName = "Bob",
DateJoined = DateTime.UtcNow
});
_context.SaveChanges();
如何在DbContext类中初始化用户
。我没有初始化它。你确定你的建议是在实体框架的上下文中,因为我不明白你的意思。数据库中的用户主键是如何定义的?你是如何在DbContext类中初始化Users
的?我的ApplicationDbContext
继承IdentityDbContext
,所以用户是在基类公共虚拟IDbSet用户{get;set;}
上提供。我没有初始化它。你确定你的建议是在实体框架的上下文中,因为我不明白你的意思。数据库中如何定义用户主键?