Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
Asp.net core 无法在Identity DB asp.net core和EF中存储日期_Asp.net Core_Entity Framework Core - Fatal编程技术网

Asp.net core 无法在Identity DB asp.net core和EF中存储日期

Asp.net core 无法在Identity DB asp.net core和EF中存储日期,asp.net-core,entity-framework-core,Asp.net Core,Entity Framework Core,每当我尝试创建新用户时,CreateAxync都会抛出一个异常,其中InnerException为: “将datetime2数据类型转换为datetime数据类型导致值超出范围。\r\n语句已终止。” 这个错误导致了100多个类似的查询,但大多数都相当陈旧,而且据我所知,没有一个与我的情况相关。 SQLExpress数据库中的字段定义为 [DOB] [datetime] NULL, 最初,我尝试在“ApplicationUser”模型中存储一个有效的20世纪日期。该字段在模型中定义为:

每当我尝试创建新用户时,CreateAxync都会抛出一个异常,其中InnerException为:
“将datetime2数据类型转换为datetime数据类型导致值超出范围。\r\n语句已终止。”
这个错误导致了100多个类似的查询,但大多数都相当陈旧,而且据我所知,没有一个与我的情况相关。 SQLExpress数据库中的字段定义为

[DOB] [datetime] NULL,
最初,我尝试在“ApplicationUser”模型中存储一个有效的20世纪日期。该字段在模型中定义为:

        [Required)]
        public DateTime DOB { get; set; }
我读了很多关于这个问题原因的文章,但找不到解决方案,所以为了继续开发,我决定暂时忽略它,将字段设置为null并继续。因此,我将
ApplicationUser
中的定义更改为

        [Column("DOB",TypeName = "datetime")]
        public Nullable<DateTime> DOB { get; set; }
[列(“DOB”,TypeName=“datetime”)]
公共可空DOB{get;set;}
并对控制器中的值进行硬编码,将其设置为
null
,忽略提供的值。但问题依然存在。问题可能是什么


非常感谢任何帮助。

我将前往微软,寻找SQL团队,并安排公开执行。人们需要学会发出正确的错误信息

因为我正在测试并在DB中插入出生日期,所以我假设datetime2到datetime的转换是指DOB字段。但是,当然,错误消息中没有提到受影响的列

碰巧数据库中还有另一个日期,JoinDate,它是在创建帐户时由控制器添加的,问题出在这个字段上。当然,这是我的错误-我应该初始化字段,但是如果错误消息包含列名,我会在几秒钟内修复它,而不是几天

这就像那些说“无法打开指定文件”的错误消息,但其中指定的文件从未命名


您使用过fluent api吗?我不知道您的意思。除了在Startup中配置服务以使用SQL和Identity之外,我创建的唯一其他东西是
ApplicationUser
,它扩展了
IdentityUser
。其他一切都由UserManager管理。我确实想知道Identity使用的EF定义文件在哪里,但我假设所有这些都是自动发生的。我是否应该指示
ApplicationUser
字段在数据库中的存储位置?除了日期之外,它似乎已经很好地解决了这一问题。我的意思是,如果您尝试使用fluent apiI在identity DbContext中为您的实体添加配置,那么将删除Column属性,然后生成迁移,让efcore决定使用哪种数据类型,它将正确选择。我会在公共时间申报吗?DOB使其为null我不想听起来很愚蠢,但我的整个DbContext类如下所示
public class IdentityContext:IdentityDbContext
{
public IdentityContext(DbContextOptions):基本(选项)
{
}
您没有解决我的问题。我的问题实际上完全无关。但我笑得很开心,所以我投了这个票:-)