这是我的两个实体和上下文类:
public class ApplicationUser : IdentityUser
{
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public string Email { get; set; }
}
public class Event
{
public Guid Id { get; set; }
[Required]
public string Header { get; set; }
[Required]
public string Description { get; set; }
[Required]
public DateTime Date { get; set; }
[Required]
public ApplicationUser Host { get; set; }
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public DbSet<Event> Events { get; set; }
public ApplicationDbContext()
: base("DefaultConnection")
{
}
}
这是我的种子方法:
protected override void Seed(ApplicationDbContext context)
{
var manager = new UserManager<ApplicationUser>(
new UserStore<ApplicationUser>(
new ApplicationDbContext()));
var user0 = new ApplicationUser()
{
UserName = "User0",
FirstName = "FirstName0",
LastName = "LastName0",
Email = "Email0@Example.com",
};
manager.Create(user0, "Password0");
var user1 = new ApplicationUser()
{
UserName = "User1",
FirstName = "FirstName1",
LastName = "LastName1",
Email = "Email1@Example.com",
};
manager.Create(user1, "Password1");
var user2 = new ApplicationUser()
{
UserName = "User2",
FirstName = "FirstName2",
LastName = "LastName2",
Email = "Email2@Example.com",
};
var eventObj = new Event()
{
Id = Guid.NewGuid(),
Host = user0,
Header = "Header0",
Description = "Description0",
Date = DateTime.Now
};
manager.Create(user2, "Password2");
context.Events.AddOrUpdate(eventObj);
}
当我在包管理器控制台中运行命令 Update-Database 时,我得到以下结果:
一个或多个实体的验证失败 . 有关详细信息,请参阅“EntityValidationErrors”属性 .
我究竟做错了什么?我正在研究VS 2013 Asp.net Mvc模板 .
提前致谢,
3 回答
如果数据已经存在,那么请考虑以这种方式使用addorupdate .
myContext.AddOrUpdate(c => c.FullName,new Customer {FullName =“Andrew Peters”,CustomerNumber = 123},);
将
context
参数传递给UserStore<ApplicationUser>
构造函数(您需要为用户使用与Seed
方法中稍后用于事件的用户相同的DbContext
实例):我改变了种子方法,现在工作正常:
现在我在将Event实体添加到上下文后调用Create user方法 .