【问题标题】:How to include a entity specific property in Entity Framework?如何在实体框架中包含实体特定属性?
【发布时间】:2017-08-27 05:04:57
【问题描述】:

我正在使用实体框架。我没有足够的经验来解决任何类型的问题。我现在面临的问题是:我有两个类,如下所示:

public class AspNetUser: NormalUser
{
    [Key]
    public string UserId { get; set; }

    public string PIN { get; set; }

    public string FullName { get { return this.LastName + " , " + this.FirstName; } }
}

public class OfferReview
{
    [Key]
    public string OfferReviewId { get; set; }

    public string UserId { get; set; }
    public string Review { get; set; }

    public virtual AspNetUser User { get; set; }
}

我需要将所有OfferReview 属性与AspNetUser.FullName 属性绑定==> 我试过这样:

return context.OfferReviews
              .Where(It => It.OfferId == offerId)
              .Include(it => it.User.FullName)
              .ToList();

这里offerId是一个函数参数。我无法显示完整的功能....

我可以在 linq join 的帮助下轻松获得上述要求。但我想要上面的东西,比如 lambda 表达式。

有可能吗?或者如果可能的话,如果不可能的话,还有其他方法吗?请帮忙

【问题讨论】:

    标签: c# entity-framework linq


    【解决方案1】:

    您的查询应该是:

    return context.OfferReviews
                  .Where(It => It.OfferId == offerId)
                  .Include(it => it.User)
                  .ToList();
    

    这会返回一个OfferReview 实体列表,每个实体中都有一个User 对象。

    现在在您看来,您可以绑定OfferReview.User.FullName

    【讨论】:

      【解决方案2】:

      您可以通过技术 ViewModel 做到这一点

      这个视图模型:

              public class ViewModel
      {
          public string OfferReviewId { get; set; }
          public string UserId { get; set; }
          public string Review { get; set; }
          public string LastName { get; set; }
          public string FirstName { get; set; }
          public string FullName { get { return this.LastName + " , " + this.FirstName; } }
      }
      

      这个查询:

           var query = context.OfferReview
                   .Where(It => It.OfferReviewId == "1")
                   .Select(p => new ViewModel
                      {
                          OfferReviewId = p.OfferReviewId,
                          Review = p.Review,
                          UserId = p.UserId,
                          FirstName = p.User.FirstName,
                          LastName = p.User.LastName
                      }).ToList();
      

      【讨论】:

        猜你喜欢
        • 2013-09-06
        • 1970-01-01
        • 2017-01-30
        • 1970-01-01
        • 1970-01-01
        • 2014-09-20
        • 1970-01-01
        • 1970-01-01
        • 2014-08-12
        相关资源
        最近更新 更多