Linq查询视图不返回任何元素

时间:2013-10-02 21:30:49

标签: json entity-framework sql-view

目前,我正在尝试在同一ViewModel中填充其他值。所以我的viewmodel最初是通过这个JsonResult方法填充的。

public virtual JsonResult GetInstitutionContacts(Guid? provideruid)
{
    return Json(new { ContactViewModel = _repository.GetContactsByProviderUid(provideruid) }, JsonRequestBehavior.AllowGet);
}

当用户从下拉列表中进行选择时,将设置参数值。我的JsonResult方法使用的存储库如下所示:

    public IQueryable<ContactViewModel> GetContactsByProviderUid(Guid? provideruid)
    {
        var q = from r in Context.vw_DistrictContacts.Where(p => p.ProviderUid == provideruid && p.School == AdminBuilding)
                select new ContactViewModel
                {
                    FamilyName = r.GivenNames.ToUpper(),
                    GivenName = r.FamilyNames.ToUpper(),
                    CourtesyTitle = r.Title,
                    ContactId = r.PersonUid
                };
        return q.Distinct();
    }

我的上下文中的表视图(Context.vw_DistrictContacts)返回那些确切的字段(FamilyName,GiveName ...)。当用户随后选择另一个值时会发生此问题。 下拉选择然后触发此控制器方法:

        public virtual JsonResult GetSchoolContacts(Guid provideruid)
        {
            return Json(new { ContactViewModel = _repository.GetContacts(provideruid) }, JsonRequestBehavior.AllowGet);
        }

这就是存储库方法的样子:

   public List<ContactViewModel> GetContacts(Guid? providerUid)
    {
        var q = from r in Context.vw_PersonToSdeUsers.Where(p => p.ProviderUid == providerUid)
                select new ContactViewModel
                {
                    SchoolName = r.SchoolName,
                    ContactId = r.PersonUid,
                    PersonUid = r.PersonUid,
                    FamilyName = r.GivenNames.ToUpper(),
                    GivenName = r.FamilyNames.ToUpper(),
                    SdeUserEmail = r.SdeUserEmail,
                    CourtesyTitle = r.ProgramDescription
                };
        return q.ToList();
    }

表视图(Context.vw_PersonToSdeUsers)再次返回预期的内容。但返回值“q.ToList()”为空。我相信问题是我已经在使用ContactViewModel了。我还为表视图运行了select语句,它按预期返回。我还运行了提供程序过滤器,并再次按预期返回。

1 个答案:

答案 0 :(得分:0)

谢谢我添加了一个实体标签也会添加一个linq到sql标签,因为这是我用于我的ORM。我已经解决了这个问题,但我觉得这有点破解。我目前实现的是另一个定义预期属性的模型,从这里我用GetContacts()方法填充它,一切都按预期工作。再次感觉有点黑客。