簡體   English   中英

MembershipUser和Entity Framework Code First

[英]MembershipUser and Entity Framework Code First

我正在使用EF Code First,現在在實現自定義MembershipProvider時遇到了麻煩。

對於EF Code First,我創建了自己的用戶類,如下所示:

public class User
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
    [Required]
    public string UserName { get; set; }
    [Required]
    public string Password { get; set; }
    [Required]
    public string Email { get; set; }
    [Required]
    public bool IsApproved { get; set; }
    public DateTime? LastLoginDate { get; set; }
    public DateTime? LastActivityDate { get; set; }
    [Required]
    public DateTime CreationDate { get; set; }
    [Required]
    public string ApplicationName { get; set; }
}

我已經為EF實現了我的自定義MembershipProvider的一些功能,但是其中一些現在需要MembershipUser作為參數或返回值。

    public MembershipUser GetUser(string username, bool userIsOnline)

我的第一個想法是從MembershipUser繼承我的User類,但后來我失去了對屬性的控制。 這甚至適用於EF Code First嗎?

另一個想法是為我的用戶類創建一個ToMembershipUser()方法。 這是一個選擇嗎? 我需要考慮什么?

處理這個問題的最佳方法是什么?

您可以使用適配器模式來解決此問題。

public class CustomUser : MembershipUser
{
    public CustomUser(string providername,
                    User userAccount) :
        base(providername,
                        userAccount.UserName,
                        userAccount.Id,
                        userAccount.Email,
                        passwordQuestion,
                        string.Empty,
                        true,
                        false,
                        userAccount.CreationDate,
                        userAccount.LastLoginDate,
                        userAccount.LastActivityDate,
                        new DateTime(),
                        new DateTime())
    {
        UserAccount = userAccount;
    }

    public User UserAccount { get; private set; }
}

根據實體模型的具體情況,自定義傳遞給基礎構造函數的參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM