3
我使用sqlmembership provider
並創建了一些表。我需要它的user
表。表間關係
我的應用程序有三種類型的用戶:teachers
,students
和other users
。所以我爲他們想了三張桌子。
他們每個人都有一個username
由會員提供商註冊並保存在自己的表中。
現在我不知道如何使用實體框架將teachers
或students
表之間的關係與保存在成員表中的用戶名關聯起來。
我以爲我可以添加一個一對一的關係,由成員提供商創建的users
表與表之間的逆向工程創建表首先代碼,但它似乎不允許更改這些表。
有人可以告訴我如何使老師或學生與他們的用戶名之間的關係(我的意思是他們的會員信息)?
更多詳細信息:這裏有
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; }
}
謝謝@威爾,所以這是一對一的關係?我們知道一個用戶名應該屬於一個人,這是否會阻止另一個表中的其他人使用該用戶名(即學生)? – Blazi
@Blazi:是的,這是一對一的關係。我爲答案添加了一段代碼,以確保用戶名不能多次使用。 – Will
@我很困惑,我一直在研究類似的模型,但我無法使用你的例子使它工作。據我所知,會員沒有'UserName',他們唯一的相似的列是'UserId',它不存在於'RegisterModel'中。那麼如何實例化成員變量呢?我也嘗試從'UserProfile'中拉'外鍵',因此無法正常工作。 – Komengem