Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架-简单操作导致格式异常-索引(基于零)必须大于或等于零_C#_Entity Framework_Entity Framework 6.1 - Fatal编程技术网

C# 实体框架-简单操作导致格式异常-索引(基于零)必须大于或等于零

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

当我尝试执行一个简单的添加操作时,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.
用户继承自
IdentityUser
Microsoft.AspNet.Identity

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

  • 整数、布尔值和字符串-获取默认值
  • 我提供的一个不可为空的DateTime属性(DateJoined)
  • 一个可为空的DateTime属性
  • 一个正确默认为0的枚举
  • 虚拟ICollections

  • 我不知道是什么属性导致了这个问题,我怎样才能更具体地知道呢?可能是别的什么吗?异常对话框不包含查看内部异常的常见链接。

    要了解更多有关发生的情况,请尝试执行以下操作:

    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;}
    上提供。我没有初始化它。你确定你的建议是在实体框架的上下文中,因为我不明白你的意思。数据库中如何定义用户主键?