tina_overgaard Ответов: 2

Как получить связанные данные из entity framework в ASP.NET MVC


привет
У меня есть список, в котором есть несколько listingmessages. Я хочу показать, какие listingmessages текущий пользователь написал в конкретном списке.

В sql я напишу это :
SELECT * FROM Listings INNER JOIN ListingMessages on Listings.ListingId = ListingMessages.ListingId WHERE ListingMessages.UserId = userID


Но как мне это сделать в рамках entitiy?

Модель для перечисления :

public class Listing
   {

       public int ListingId { get; set; }

       [Required(ErrorMessage = "Angiv venligst en titel og udgave")]
       [Display(Name = "Titel & udgave")]
       public string TitleEdition { get; set; }

       public virtual ICollection<ListingMessage> listMessage { get; set; }

   }

Модель для ListingMessages :

public class ListingMessage
 {
     public int ListingMessageId { get; set; }

     [Display(Name = "Send besked")]
     [Required(ErrorMessage = "Angiv venligst en besked")]
     public string Message { get; set; }

     public string UserId { get; set; }

     public virtual Listing Listing { get; set; }
     public int ListingId { get; set; }


 }


Что я пробовал в контроллере :

Что я уже пробовал:

public ActionResult ProfileMessageListing()
        {
            var user = User.Identity.GetUserId();

            //var list = (from l in db.Listings
            //            join lm in db.ListingMessages on l.ListingId equals lm.ListingId
            //            where lm.UserId == user
            //            select l);

            //var list = db.Listings.Include(x => x.listMessage).Where(d => d.listMessage.Count > 0).ToList();

            var listmsg = db.ListingMessages.Where(d => d.UserId == user).ToList();


            var list = db.Listings.Where(s => s.ListingId == listmsg.);
            

            return View(list);
        }


Надеюсь, кто-то может дать мне подсказку, я действительно застрял!!

2 Ответов

Рейтинг:
2

Member 14796558

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

[HttpGet]
public IActionResult UserIndex()
{
var userId = _userManager.GetUserId(HttpContext.User); //gets the id of the logged user
List<Assign> listdata = _context.Assign.Where(u => u.Id == userId).ToList(); //create list of users
//where the Id in Assign table/model is the same as the id of the logged user
return View(listdata);
}


Смотреть:
@model IEnumerable<TaskManager2.Models.Assign>

@{
    ViewData["Title"] = "UserIndex";
}

<h1>UserIndex</h1>

<p>
    <a asp-action="Create">Create New</a>
</p>
<table class="table">
    <thead>
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.TaskId)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Id)
            </th>
            <th></th>
        </tr>
    </thead>
    <tbody>
@foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.TaskId)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Id)
            </td>
            <td>
                <a asp-action="Edit" asp-route-id="@item.AssignId">Edit</a> |
                <a asp-action="Details" asp-route-id="@item.AssignId">Details</a> |
                <a asp-action="Delete" asp-route-id="@item.AssignId">Delete</a>
            </td>
        </tr>
}
    </tbody>
</table>

Надеюсь, это поможет СБ!


Richard Deeming

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

Рейтинг:
1

F-ES Sitecore

Используйте "включить" для доступа к связанным таблицам

Entity Framework Загрузка Связанных Сущностей[^]