我是Identity框架和Code First方法的新手。现在我在VS 2015上创建一个新的MVC5项目时使用默认项目。
我运行项目时生成的默认表格很好,但我希望它与其他项目一起生成一个名为tbSkills(Id,SkillName)的新表格,并且它必须与AspNetUsers有多对多的关系。
那么我要写的地方和内容要做到这一点?
ps:我按照教程后也将Id类型从字符串更改为int,它运行正常。
这是我在 IdentityModels.cs 文件中的 ApplicationUser 类中的最后一次尝试:
public class ApplicationUser : IdentityUser<int, MyUserLogin, MyUserRole, MyUserClaim>, IUser<int>
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser, int> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
// // This following is my added code
public ApplicationUser()
{
Skills = new HashSet<tbSkill>();
}
public virtual ICollection<tbSkill> Skills { get; set; }
}
public class tbSkill
{
public tbSkill()
{
Users = new HashSet<ApplicationUser>();
}
public int Id;
public string SkillName;
public virtual ICollection<ApplicationUser> Users { get; set; }
}
它以此错误结束:
我已经研究过很多文章,但没有成功。
答案 0 :(得分:0)
尝试添加技能ID
public class ApplicationUser : IdentityUser<int, MyUserLogin, MyUserRole, MyUserClaim>, IUser<int>
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser, int> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
// // This following is my added code
public ApplicationUser()
{
Skills = new HashSet<tbSkill>();
}
public int SkillId {get;set;}
public virtual ICollection<tbSkill> Skills { get; set; }
}