和的MembershipUser实体框架code首先 [英] MembershipUser and Entity Framework Code First
问题描述
我与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屋!