Asp.net mvc RoleManager、UserManager datetime2尝试为数据库种子时出现异常
我得到了著名的 将datetime2数据类型转换为datetime数据类型 导致值超出范围 manager.Createrole异常;在尝试为数据库设定种子时。无论我使用Db初始值设定项类还是迁移来为我的Db设定种子,都会发生这种情况Asp.net mvc RoleManager、UserManager datetime2尝试为数据库种子时出现异常,asp.net-mvc,entity-framework,datetime,sql-server-2012,asp.net-identity-2,Asp.net Mvc,Entity Framework,Datetime,Sql Server 2012,Asp.net Identity 2,我得到了著名的 将datetime2数据类型转换为datetime数据类型 导致值超出范围 manager.Createrole异常;在尝试为数据库设定种子时。无论我使用Db初始值设定项类还是迁移来为我的Db设定种子,都会发生这种情况 if (!context.Roles.Any(r => r.Name == "AppAdmin")) { using (var store = new RoleStore<IdentityRole>(con
if (!context.Roles.Any(r => r.Name == "AppAdmin"))
{
using (var store = new RoleStore<IdentityRole>(context))
using (var manager = new RoleManager<IdentityRole>(store))
{
var role = new IdentityRole { Name = "AppAdmin" };
manager.Create(role);
}
}
if (!context.Users.Any(u => u.UserName == "SampleUser"))
{
using( var store = new UserStore<ApplicationUser>(context) )
using (var manager = new UserManager<ApplicationUser>(store))
{
var user = new ApplicationUser { UserName = "SampleUser", PhoneNumber = "0797697898", Email = "adr@gmail.com" };
manager.Create(user, "ChangeItAsap!");
manager.AddToRole(user.Id, "AppAdmin");
}
我知道问题是SQL Server datetime不能包含defaultDateTime值,因为它只能保存1753/1/1之后的日期,但我无法控制Identity Framework内部,因此我无法在有问题的属性上添加其他属性以将其转换为datetime2。另外,我可能不想这样做,我只想在数据库中创建一些初始用户和角色
在检查Db模式后,我看到在AspNetUsers中使用的唯一日期是LockoutEndDateUtc,但正如我前面提到的,在我尝试添加任何用户之前,就会发生异常
有什么建议吗
SQL Server 2012,asp-mvc-5-2-2,entity-framework-6-1-3,identity framework 2-1,Visual Studio 2013
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Properties<DateTime>().Configure(c => c.HasColumnType("datetime2"));
base.OnModelCreating(modelBuilder);
}
有帮助,但这不是我想要的解决方案