Таблица имеет две ссылки на другую таблицу.Как .Include указывает одну из этих ссылок? - PullRequest
0 голосов
/ 28 сентября 2019

tblWorkOrder имеет две ссылки на tblUser через tblWorkOrder.EnteredBy и tblWorkorder.ClosedBy.Код ниже выбирает ссылку ClosedBy.Как мне указать ссылку OpenedBy?

public IEnumerable<SelectListItem> GetEnteredBy()
{
    using (var context = new FacilityEntities())
    {
        List<SelectListItem> user = context.tblWorkOrder.AsNoTracking().Include("tblUser")
            .GroupBy(x => new { x.tblUser.LastName, x.tblUser.FirstName, x.tblUser.UserID })
            .Select(x =>
            new SelectListItem
            {
                Value = x.Key.UserID,
                Text = string.Concat(x.Key.FirstName, " ", x.Key.LastName)
            }).ToList();
        var usertip = new SelectListItem()
        {
            Value = null,
            Text = "Select"
        };
        user.Insert(0, usertip);
        return new SelectList(user, "Value", "Text");
    }
}

1 Ответ

0 голосов
/ 28 сентября 2019

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

public class tblWorkOrder 
{
    public long? CloseById { get; set; } // ForeignKey
    [Foreignkey("CloseById")]  // CloseBy navigation property is associated to CloseById
    public tblUser CloseBy{ get; set; } // assuming tblUser is the name of your entity

    public long? EnteredById { get; set; }
    [ForeignKey("EnteredById")]
    public tblUser EnteredBy { get; set; }

    ...
}

Как только вы правильно определите свое свойство навигации, вы можетепросто включите их в запрос:

context.tblWorkOrder.AsNoTracking().Include(r => r.CloseBy).Include(r => r.EnteredBy)
... 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...