Предупреждение Вот два решения, которые будут работать.Первый легко.Второе, я думаю, это то, что вы ищете, но примите это за то, что оно того стоит.Убедитесь, что вы понимаете, что делаете, так как это приведет к получению данных поставщика членства и прямому доступу к ним, что может привести к некоторым скрытым бомбам, если вы не будете осторожны (например, удаляете данные).
Данные о членстве предназначены только для аутентификации;роли для авторизации;профили для пользовательских данных (например, часовой пояс или любимый цвет.
Solution One
Если вы хотите добавить комментарий под текущим пользователем(или любого пользователя) вы можете сделать:
var comment = new Comment(....);
comment.userId = User.Identity.Name; //for user name
или
comment.userId = new Guid(Membership.GetUser().ProviderUserKey); //for guid in table
Это хороший способ, и у вас никогда не будет прямого доступа к таблицам aspnet, вы просто используете его информацию.
Решение второе
Я предполагаю, что вы используете L2S и конструктор в VS.
ДобавляяИз таблицы (-ов) членства в вашем проекте L2S вы получите доступ к его данным. Это может даже оказаться предпочтительным для некоторых быстрых запросов (таких как даты, информация о блокировке и т. д., поскольку вам не нужно использовать встроенныеsprocs с серьезным избыточным и тяжелым кодом.) Если вы создадите связь в БД или в конструкторе L2S, у вас будут отношения, к которым вы можете получить доступ, как задает ваш вопрос.
На этомТочка, дизайнер создал ваши классы для комментариев и пользователей. Если вы делаете что-нибудьУчитывая фактическую пользовательскую таблицу, которую вы только что создали, вы обойдете дизайн провайдера членства - не делайте этого, если вы не знаете, что делаете.Когда вы добавляете комментарий к Пользователю, он добавит комментарий к таблицам комментариев с правильной неповрежденной связью.
Теперь вы должны иметь возможность:
var user = MyUser.GetById(userId);
user.Comments.Add(comment);
Помните, чтоПользователь в этом случае отличается от того, когда вы делаете
var user = Membership.GetUser(userId);