在 MVC 5 Razor 中引用 SQL 内部连接查询别名的最佳方式

Best Way to reference a SQL Inner Join Query alias in MVC 5 Razor

我有以下代码,想知道是否有任何方法可以在 MVC 5 Razor 中引用 "ManagedByName",或者如果您知道解决方法,我们将不胜感激。

我想要完成的是派生一个对象中的名字和姓氏组合,或者最好是 "alias",可以在 Razor 中访问。我需要帮助来完成这项任务。我已经做了将近两天的工作,我很困惑....

在控制器 Class 中,我有以下内容:

  public async Task<ActionResult> Details(string location)
        {

            if (location == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
          //  Contractor contractor = db.Contractors.Find(id);

            string Query = "SELECT cmb.*, dc.DeliveryCenter,c.ContractorNumber,c.SubContractor,c.FirstName,c.LastName,c.dbaBusinessName,at.AccountTitleDescription,c.Email,c.MasterContractorNumber,c.MasterContractorNumber,c.OriginalContractDate,c.IsContractSuspended" +
            " from Contractor c inner join ContractorManagedBy cmb on c.ManagedBy = cmb.ManagedBy" +
            " inner join DCLocMapping dc on c.LocationID = dc.LocationID" +
            " inner join AccountTitle at on c.AccountTitleID = at.AccountTitleID" +
            " where DeliveryCenter in (@p0) order by dc.DeliveryCenter,c.ContractorNumber" +
            " Select new Contracting { ManagedBy1 = cmb.ManagerFirstName + ' ' + cmb.ManagerLastName}";


            Contractor contractor = await db.Contractors.SqlQuery(Query, location).SingleOrDefaultAsync();

            if (contractor == null)
            {
                return HttpNotFound();
            }
                        return View(contractor);
        }

public class Contracting
        {
            public int iimanagedby { get; set; }
            public string ManagedByName { get; set; }
        }

public IQueryable<Contracting> TakeManagedBy()
        {
            return (from x in db.ContractorManagedBies
                     orderby x.ManagerLastName
                     select new Contracting
                     {
                         iimanagedby = x.ManagedBy,
                         ManagedByName = x.ManagerFirstName + " " + x.ManagerLastName

                     });
        }

在 Razor 页面中,我有:

@foreach (var item in Model)
{
  @Html.DisplayFor(modelItem => item...
}

我可以从 Ienumerable 模型中获取对象,但看不到在 foreach 循环中获取 ManagedByName IQeryable 名称的方法,因为无法识别该对象。同样,我们将不胜感激对代码示例的任何帮助。我对 MVC 有点陌生,但希望有一种方法可以解决这个让我感到困惑的解决方案。

您可以通过在匹配的部分 class 中添加新属性来横向扩展 EF 类。我强烈建议您开始使用 EF 并停止使用硬连线 SQL 字符串:)

只需将 ManagedByName 添加为 属性,returns 其他两个名称加入并像视图中的任何其他 属性 一样使用它。

public partial class YourEFModelClassNameHere
{
   public string ManagedByName
   {
      get
      {
          return this.ManagerFirstName + " " + this.ManagerLastName;
      }
   }
}