我得到了着名的
尝试为数据库设定种子时,在将datetime2数据类型转换为日期时间数据类型 导致了超出范围的价值。
manager.Create(role);
处出现异常。无论我使用Db初始化程序类还是迁移种子数据库,都会发生这种情况。
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不能包含默认(DateTime)值,因为它只能在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)
答案 0 :(得分:0)
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Properties<DateTime>().Configure(c => c.HasColumnType("datetime2"));
base.OnModelCreating(modelBuilder);
}
帮助但这不是我正在寻找的解决方案......