Próbuję utworzyć tabelę relacyjną między ApplicationUser
a tabelą dodałem Step
.Jak dołączyć użytkownika ApplicationUser do relacyjnej tabeli/modelu w asp.net mvc
Chyba jestem trochę zdezorientowany o co ApplicationUser
jest werset IdentityUser
wersecie UserManager
itp
To moja próba modelu.
public class UserStep
{
[ForeignKey("User")]
public string UserId { get; set; }
public int UserStepID { get; set; }
public int StepID { get; set; }
public virtual ApplicationUser User { get; set; }
public virtual Step Step { get; set; }
}
Poprawiłem mój model na podstawie nowych informacji, jednak wciąż nie wiem, czy to prawda. Mogę pobrać indeks kroków użytkownika z tym:
var userSteps = db.UserSteps.Include(u => u.Step).Include(u => u.User);
return View(userSteps.ToList());
Jednak moim celem jest pokazanie tylko kroków związanych z bieżącym użytkownikiem. Wszelkie sugestie, jak to zmienić, aby zwrócić tylko bieżącego użytkownika?
Aktualizacja
W kontrolerze dla userstep, dodałem tę nową metodę i stworzył z niego widok (który wieje w górę). Moim celem jest uzyskanie listy kroków użytkownika związanych z bieżącym użytkownikiem. Czy nie jest to opisane w aktualizacji 2?
public ActionResult UserStep()
{
var user = UserManager.FindById(User.Identity.GetUserId());
var userStepsList = db.UserSteps.Where(u => u.UserId == user.Id);
return View(userStepsList);
}
Updated - Wersja robocza
ApplicationUser Wzorcowa IdentityModel
Dodany
public virtual ICollection<UserStep> UserSteps { get; set; }
UserStep model
public class UserStep
{
[ForeignKey("User")]
public string UserId { get; set; }
public int UserStepID { get; set; }
public int StepID { get; set; }
public virtual ApplicationUser User { get; set; }
public virtual Step Step { get; set; }
}
Krok model
Dodany
public virtual ICollection<UserStep> UserSteps { get; set; }
kontroler Utworzono userstep i stworzył nową metodę przeglądania konkretnej tabeli relacyjnej użytkownika.
public ActionResult UserStep()
{
var user = UserManager.FindById(User.Identity.GetUserId());
var userStepsList = db.UserSteps.Where(u => u.UserId == user.Id).Include(u => u.Step).Include(u => u.User);
return View(userStepsList);
}
Jaki jest cel UserStepId? Jeśli UserStep jest połączoną tabelą, to nie potrzebujesz UserStepId – CodeNotFound
. Może być jednak kilka kroków. na przykład wiele kroków dla jednego użytkownika. Poprawiłem powyższy kod na podstawie nowych informacji. Wszelkie sugestie będą bardzo mile widziane. –
Kyle - dodałem aktualizację opartą na Twojej sugestii, ale czuję, że może czegoś brakuje. –