2017-08-25 92 views
0

我正在使用实体框架。我没有足够的经验来解决任何问题。我现在面临的问题是这样的:我有两个类如下所示:如何在实体框架中包含实体特定的属性?

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连接的帮助。但我想要一些像lambda表达式之类的东西。

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

回答

1

你能行通过技术视图模型

此视图模型:

 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(); 
1

您的查询应该是:

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

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

现在在您的视图中,您可以绑定OfferReview.User.FullName