和的MembershipUser实体框架code首先 [英] MembershipUser and Entity Framework Code First

查看:84
本文介绍了和的MembershipUser实体框架code首先的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我与EF code首先打转转,现在遇到了麻烦实现自定义的MembershipProvider时。

I am playing around with EF Code First and now ran into trouble when implementing a custom MembershipProvider.

有关EF code首先,我创建了自己的用户类是这样的:

For EF Code First I created my own user class like this:

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; }
}

我也实现我的自定义的MembershipProvider的一些功能已经EF,但其中一些现在要求的MembershipUser 无论是作为参数或返回值。

I also implemented some functions of my custom MembershipProvider for EF already, but some of them now require MembershipUser as either a parameter or a return value.

    public MembershipUser GetUser(string username, bool userIsOnline)

我首先想到的是要继承的MembershipUser 我的User类,但后来我失去对属性的控制。请问,即使有EF code的第一部作品?

My first thought was to inherit my User class from MembershipUser, but then I lose the control over the Properties. Would that even work with EF Code First?

另一种想法是创建为我的用户类ToMembershipUser()方法。那会是一种选择?我有什么考虑?

An alternate idea is to create a ToMembershipUser() method for my user class. Would that be an option? What would I have to consider?

什么是处理这个问题的最佳方式?

What's the best way to handle this?

推荐答案

您可以使用适配器模式来解决这个问题。

You can use the Adapter Pattern to solve this problem.

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; }
}

自定义传递给取决于你的实体模型基础构造的参数。

Customize the parameters passed to the base constructor depending on what your entity model has.

这篇关于和的MembershipUser实体框架code首先的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆