我使用sqlmembership provider
并创建了一些表格。我需要它的user
表。
我的应用有三种类型的用户:teachers
,students
和other users
。所以我想到了他们的三张桌子。
每个人都有一个username
,由会员提供者注册并保存在自己的表格中。
现在我不知道如何使用实体框架将teachers
或students
表之间的关系保存在成员资格表中保存的用户名中。
我以为我可以在成员提供者创建的users
表和我的表之后添加一对一的关系,然后通过逆向工程创建表来编写代码,但似乎不允许更改这些表。< / p>
有人可以告诉我如何在教师或学生之间建立用户名(我的意思是他们的会员信息)
更多详情:此处是代码优先表
public class aspnet_Users
{
public aspnet_Users()
{
this.aspnet_PersonalizationPerUser = new List<aspnet_PersonalizationPerUser>();
this.aspnet_Roles = new List<aspnet_Roles>();
}
public System.Guid ApplicationId { get; set; }
public System.Guid UserId { get; set; }
public string UserName { get; set; }
public string LoweredUserName { get; set; }
public string MobileAlias { get; set; }
public bool IsAnonymous { get; set; }
public System.DateTime LastActivityDate { get; set; }
public virtual aspnet_Applications aspnet_Applications { get; set; }
public virtual aspnet_Membership aspnet_Membership { get; set; }
public virtual ICollection<aspnet_PersonalizationPerUser> aspnet_PersonalizationPerUser { get; set; }
public virtual aspnet_Profile aspnet_Profile { get; set; }
public virtual ICollection<aspnet_Roles> aspnet_Roles { get; set; }
}
public class Techer
{
[Key]
public int TeacherId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string NationalNumber { get; set; }
public string PhoneNumber { get; set; }
public string Description { get; set; }
public int OfficeId { get; set; }
public virtual Office Office { get; set; }
}
public class Student
{
public int StudentId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int OfficeId { get; set; }
public virtual Office Office { get; set; }
}
答案 0 :(得分:1)
我遇到了类似的情况,我最终做的是从我的用户配置文件表创建一个外键到成员资格表。因此,例如,Teacher表将有一个名为MembershipId的列,它将成为成员资格表中Id列的外键。然后,在我的AccountController的Register操作中,我有这样的事情:
if (db.Memberships.Any(x => x.UserName == model.UserName)
{
// handle error here
// return view with error message "user name already in use"
}
var token = WebSecurity.CreateUserAndAccount(model.UserName, model.Password, null, true);
var membership = db.Memberships.SingleOrDefault(x => x.UserName == model.UserName);
if (membership != null)
{
var newProfile = new Teacher
{
Membership = membership
// add other properties here if required
}
db.Teachers.Add(newProfile);
db.SaveChanges();
}
*此代码未经测试,因为我目前没有可用的VS,但应足以让您走上正确的轨道。