Добавление полей на веб-страницы_Membership SimpleMembershipProvider

Можно ли добавить поля/столбцы в webpages_Membership?

[Table("webpages_Membership")]
public class Membership
{
public Membership()
{
    Roles = new List<Role>();
    OAuthMemberships = new List<OAuthMembership>();
}

[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public int UserId { get; set; }
public DateTime? CreateDate { get; set; }
[StringLength(128)]
public string ConfirmationToken { get; set; }
public bool? IsConfirmed { get; set; }
public DateTime? LastPasswordFailureDate { get; set; }
public int PasswordFailuresSinceLastSuccess { get; set; }
[Required, StringLength(128)]
public string Password { get; set; }
public DateTime? PasswordChangedDate { get; set; }
[Required, StringLength(128)]
public string PasswordSalt { get; set; }
[StringLength(128)]
public string PasswordVerificationToken { get; set; }
public DateTime? PasswordVerificationTokenExpirationDate { get; set; }

public ICollection<Role> Roles { get; set; }

[ForeignKey("UserId")]
public ICollection<OAuthMembership> OAuthMemberships { get; set; }
}

Я хочу добавить LogonCount в качестве поля/столбца, но эта таблица автоматически заполняется membership provider при создании CreateUserAndAccount().

Кажется, я не имею никакого влияния на присвоение LogonCount значения CreateUserAndAccount().


person Yustme    schedule 17.05.2013    source источник


Ответы (1)


Стандартный способ добавить информацию, относящуюся к данному идентификатору пользователя, — в таблицу UserProfile, а не в таблицу webpages_Membership. См. мой ответ здесь и запись Джона Гэллоуэя о "SimpleMembership, поставщиках членства, универсальных поставщиках и новых веб-формах ASP.NET 4.5 и шаблонах ASP.NET MVC 4" для получения дополнительной информации о связях SimpleMembership. вместе с UserProfile.

Кажется, я не имею никакого влияния на присвоение LogonCount значения...

Затем вы получаете доступ к таблице UserProfile и информации через контекст вашей базы данных, а не через поставщика членства, который на самом деле существует, чтобы предоставить вам доступ только к основному набору функций.

using (MyDbContext db = new MyDbContext())
{
  UserProfile user = db.UserProfiles
    .First(u => u.UserName.ToLower() == model.UserName.ToLower());
  user.LogonCount = 1;
  db.SaveChanges();
}
person Andy Brown    schedule 18.05.2013
comment
Привет, хорошо, так что webpages_Membership запрещен. понятно. - person Yustme; 18.05.2013
comment
Вы, вероятно, могли бы использовать его, но вы не хотите, поскольку поставщик членства заботится о его схеме так же, как и вы. - person Andy Brown; 18.05.2013
comment
@Юстме. В ответ на мой ответ SO здесь добавлена ​​ссылка для получения дополнительной информации о том, как SimpleMembership связывается с UserProfile, что может помочь как хорошо. - person Andy Brown; 24.05.2013
comment
Энди, я очень завидую тому ответу, который он получил от тебя! :о Но спасибо! - person Yustme; 25.05.2013