5

Je suis en train de jouer avec EF Code First et maintenant rencontré des problèmes lors de l'implémentation d'un MembershipProvider personnalisé.MembershipUser et Entity Framework Code Premier

Pour code EF D'abord, je crée ma propre classe utilisateur comme ceci:

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

J'ai aussi mis en œuvre des fonctions de mon MembershipProvider personnalisé pour EF déjà, mais certains d'entre eux exigent maintenant MembershipUser que ce soit un paramètre ou un valeur de retour.

public MembershipUser GetUser(string username, bool userIsOnline) 

Ma première pensée était d'hériter ma classe User de MembershipUser, mais je perds le contrôle sur les propriétés. Cela fonctionnerait-il même avec EF Code First?

Une autre idée consiste à créer une méthode ToMembershipUser() pour ma classe d'utilisateurs. Serait-ce une option? Qu'est-ce que je devrais considérer?

Quelle est la meilleure façon de gérer cela?

Répondre

8

Vous pouvez utiliser le modèle d'adaptateur pour résoudre ce problème. Personnalisez les paramètres transmis au constructeur de base en fonction de votre modèle d'entité.

+0

Cela semble fonctionner parfaitement, merci! – magnattic

+0

J'ai hérité de 'CustomUser' de' MembershipUser' et le problème est survenu lors de la sauvegarde de 'CustomUser' dans la base de données en utilisant Entity Framework. Si quelqu'un utilisait du code SQL, voici comment procéder pour personnaliser MembershipUser [Comment: implémenter un utilisateur de membre personnalisé] (http://msdn.microsoft.com/fr-fr/library/ms366730.aspx) – twnaing

+1

Ne pas oublier d'annoter la classe 'CusomUser' avec l'annotation de données' [NotMapped] '. Sinon, vous obtiendrez une erreur concernant 'CustomUser' ne possédant pas de clé unique. – twnaing

Questions connexes