EF Где пункт с идентификатором текущего пользователя - PullRequest
0 голосов
/ 06 января 2019

У меня есть ViewModel, которая должна включать в себя как все данные о текущем пользователе, так и все сведения о плане, в котором они зарегистрированы:

public class SubscribeViewModel
{
    public ApplicationUser User { get; set; }
    public Plans Plan { get; set; }
    public string StripePublishableKey { get; set; }
    public string StripeToken { get; set; }
}

У каждого пользователя есть PlanId. Так что я пытаюсь сделать что-то вроде:

SELECT * FROM Plans WHERE Id = (SELECT PlanId FROM Users WHERE UserId = CurrentUsersId);

Мой контроллер, пока что:

[Authorize]
public ActionResult Subscribe()
{
    string CurrentUser = User.Identity.GetUserId();
    SubscribeViewModel model = new SubscribeViewModel()
    {

        User = UserManager.FindById(CurrentUser),

        Plan = db.Plans.Where(a => a.Id == (db.Users.Where(b => b.Id == CurrentUser).Select(PlanId))
    };

    return View(model);
}

Я застрял в последней части запроса плана, не знаю, как выбрать только идентификатор пользователя текущего пользователя.

1 Ответ

0 голосов
/ 06 января 2019

Как вы сказали У каждого пользователя есть PlanId. Таким образом, вы можете сделать следующее:

[Authorize]
public ActionResult Subscribe()
{
    string currentUserId = User.Identity.GetUserId();
    var currentUser = UserManager.FindById(currentUserId),

    var  plan = db.Plans.Where(a => a.Id == currentUser.PlanId).FirstOrDefault();

    SubscribeViewModel model = new SubscribeViewModel()
    {
         User = currentUser,
         Plan = plan,
         StripePublishableKey = "StripePublishableKey",
         StripeToken = "StripeToken"
    };

    return View(model);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...